Novato, problema con archivo javascript externo en ASP

19/02/2007 - 06:26 por verci | Informe spam
Hola

Estoy usando Windows XP SP2, VS2005, IE7, ASP.Net 2.0, gracias de antemano
por su ayuda.

El problema que tengo es que cuando quiero mandar llamar el control
newsscroller en mi página ASP no se ve nada ni me marca ningún error solo
hasta que hago refresh me aparece este error del archivo .JS

Line 70
Char 13
Error scrollMain is undefined


Es exactamente el mismo código que uso en una página normal HTML la cual
carga y corre perfectamente, que estoy haciendo mal? , tengo ya 1 día
completamente frustrado y no encuentro la falla, aqui esta mi página ASP:

<%@ Page Language="VB" MasterPageFile="~/Default.master"
AutoEventWireup="false" CodeFile="Rss_news.aspx.vb" Inherits="Rss_news"
title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">

<div id="body">

<script type="text/javascript" language="JavaScript"
src="c:\WebNewsewsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('c:\\WebNews\ews.xml');

scrollerMain.StartScrolling ();

</script>

</div>

</asp:Content>

Preguntas similare

Leer las respuestas

#1 Jose A. Fernandez
19/02/2007 - 07:53 | Informe spam
Hola verci
Primero que nada (ya que estabas 24hs probando) hubieras posteado y
seguias probando hasta que alguien te conteste en el grupo.
BUeno por lo que veo es un script en JS para hacer scroll de noticias
Mi primer pregunta es de que sitio web lo conseguiste? (mas abajo de
coloco algunos enlaces)

Bueno vamos por parte
1) <script type="text/javascript" language="JavaScript" src="c:\WebNews
ewsscroller.js" />
Esta parte la ejecuta en el cliente el explorador y quiere cargar
un archivo que esta en SU DISCO C:\ en esa ubicacion (esto lo
entiendes asi no?) Porque es fundamental que veas que lo busca el
explorador del cliente
Lo que se tiene que hacer es que ese src (source) este en una
carpeta en tu web entonces colocas asi
src="/js/newsscroller.js"
alli el browser del visitante querra cargar un archivo externo .js
del la directorio raiz de tu sitio en la carpeta js y alli dentro el
archivo newsscroller

2) scrollerMain.LoadXML('c:\\WebNews\ews.xml');
Idem para esta parte. El archivo news.xml deberia estar en tu
sitio algo asi
scrollerMain.LoadXML('http://www.tusitio.com/noticias/
news.xml');

En todo momento no veo ningun runat="server" por ello se esta
ejecutando todo en el navegador como te voy comentando... No conozco
ese script que usas. Si nos pasas o envias la pagina donde poder ver o
descargarlo mejor.



Enlaces:
-
Un ejemplo que puede ser el tuyo. Lo es?
http://javascript.internet.com/text...oller.html

Varios Scrollers (recomendado dar una mirada a todos)
http://www.dynamicdrive.com/dynamic...index.html

_______________________
Jose A. Fernandez



On 19 feb, 02:26, "verci" wrote:
Hola

Estoy usando Windows XP SP2, VS2005, IE7, ASP.Net 2.0, gracias de antemano
por su ayuda.

El problema que tengo es que cuando quiero mandar llamar el control
newsscroller en mi página ASP no se ve nada ni me marca ningún error solo
hasta que hago refresh me aparece este error del archivo .JS

Line 70
Char 13
Error scrollMain is undefined

Es exactamente el mismo código que uso en una página normal HTML la cual
carga y corre perfectamente, que estoy haciendo mal? , tengo ya 1 día
completamente frustrado y no encuentro la falla, aqui esta mi página ASP:

<%@ Page Language="VB" MasterPageFile="~/Default.master"
AutoEventWireup="false" CodeFile="Rss_news.aspx.vb" Inherits="Rss_news"
title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">

<div id="body">

<script type="text/javascript" language="JavaScript"
src="c:\WebNewsewsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('c:\\WebNews\ews.xml');

scrollerMain.StartScrolling ();

</script>

</div>

</asp:Content>
Respuesta Responder a este mensaje
#2 verci
19/02/2007 - 10:42 | Informe spam
Hola Jose,

Hice los cambios que me sugeriste pero no funciona, no encontre el link pero
aqui te posteo el script original, lo unico que modifique fue que cargara
el documento news.xml en la funcion NewsScroller_LoadXML (sXmlID), script
esta abajo de la ASP:

******************* Primero los cambios que hice en las ASP:
<div id="body">
<script type="text/javascript" language="JavaScript"
src="/js/newsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('http://localhost/news.xml');

scrollerMain.StartScrolling ();

</script>

</div>



**************** Este es el script ***************

// title and copyright notice go here

// API
// These are the functions you will call to use the NewsScroller from your
web page

// NewsScroller_Initialize
// Parameters:
// elmDivForNews: object reference to a DIV element that will be used to
display the news
// Return:
// returns a NewsScroller object, with supporting properties and methods
function NewsScroller ()
{
if (window.NewsScrollerInstance != null)
{
window.alert("Only one NewsScroller control is allowed on a page.");
return;
}
window.NewsScrollerInstance = this;

this.LoadXML = NewsScroller_LoadXML;
this.AddNewsItem = NewsScroller_AddNewsItem;
this.Clear = NewsScroller_Clear;
this.StartScrolling = NewsScroller_StartScrolling;
this.StopScrolling = NewsScroller_StopScrolling;
this.Render = NewsScroller_Render;

// public properties
this.className = "";
this.itemNormalClassName = "";

this.scrollRate = 25;
this.scrollStep = 1;
this.scrollPause = 2000;

// internal use
this.RenderChildren = NewsScroller_RenderChildren;

this.renderedControl = "";
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

this.scrollEnabled = false;
}

function NewsScroller_LoadXML (sXmlID)
{
this.Clear();
var elmXml = document.getElementById(sXmlID);
var xDoc = elmXml.XMLDocument;
var xItems = xDoc.selectNodes("/Items/Item");
for (var iNode = 0; iNode < xItems.length; iNode++)
{
var xItem = xItems[iNode];
var xText = xItem.selectSingleNode("Text");
var xLink = xItem.selectSingleNode("Link");
this.AddNewsItem(xText.text, xLink.text);
}
var elmControl = document.getElementById(this.renderedControl);
this.RenderChildren(this.renderedControl);
}

function NewsScroller_AddNewsItem (strText, strLink)
{
this.itemsText[this.itemCount] = strText;
this.itemsLink[this.itemCount] = strLink;
this.itemCount++;
}

function NewsScroller_Clear ()
{
this.StopScrolling ();
var elmControl = document.getElementById(this.renderedControl);
while (elmControl.childNodes.length > 0)
elmControl.removeChild(elmControl.childNodes[0]);
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;
}

function NewsScroller_StartScrolling ()
{
if (this.itemCount > 0)
{
var sControlName = this.renderedControl;
if (sControlName == null)
{
window.alert ("You must render a control before you can start scrolling
it.");
return;
}
var elmControl = document.getElementById(sControlName);
var elmItem0 = document.getElementById("floatingNews0");
if (this.itemCount > 1)
{
var elmItem1 = document.getElementById(sControlName + "1");
this.cySeparator = (elmItem1.offsetTop - elmItem0.offsetTop) -
elmItem0.offsetHeight;
}
else
{
this.cySeparator = 0;
}

if (this.ScrollTimerID == null)
this.ScrollTimerID = window.setInterval(NewsScroller_ScrollNews,
this.scrollRate);
}
}

function NewsScroller_StopScrolling ()
{
window.clearInterval(this.ScrollTimerID);
this.ScrollTimerID = null;
}

function NewsScroller_Render(sControlID)
{
if (sControlID.length == 0)
{
window.alert("You must provide a unique ID for the rendered control.");
return;
}
var elmControl = document.getElementById(sControlID);
if (elmControl != null)
{
window.alert("A NewsScroller with this ID has already been rendered.
Please use a unique ID.");
return;
}
this.renderedControl = sControlID;

// <DIV>
document.write("<div");
document.write(" id=\"" + sControlID + "\"");
document.write(" class=\"" + this.className + "\"");
document.write(" style=\"position: relative; width: 100%; height: 100%;
\"");
document.write(">");

// </DIV>
document.write("</div>");

this.RenderChildren(sControlID);

var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
this.scrollPause);
elmControl = document.getElementById(sControlID);
elmControl.ResumeDateTime = dtResume;
}

// Supporting functions
function NewsScroller_RenderChildren()
{
var sControlID = this.renderedControl;
elmControl = document.getElementById(sControlID);

// <DIV>
elmDiv = document.createElement("div");
elmDiv.style.position = "absolute";
elmDiv.style.left = "0px";
elmDiv.style.width = "100%";
elmDiv.style.height = "100%";
elmDiv.style.overflow = "hidden";
elmControl.appendChild(elmDiv);

for (var nItem = 0; nItem < this.itemCount; nItem++)
{
var sItemName = sControlID + nItem.toString();

var elmP = document.createElement("p");
elmP.id = sItemName;
elmP.style.position = "relative";
elmP.style.top = "0px";
elmP.style.width = "100%";
elmP.className = this.itemNormalClassName;
elmDiv.appendChild(elmP);

var elmA = document.createElement("a");
elmA.className = this.itemNormalClassName;
elmA.href = this.itemsLink[nItem];
elmP.appendChild(elmA);

var tn = document.createTextNode(this.itemsText[nItem]);
elmA.appendChild(tn);

}
}

function NewsScroller_ScrollNews()
{
var ns = window.NewsScrollerInstance;
var sControlName = ns.renderedControl;
if (sControlName.length == 0)
{
window.alert ("Do not call ScrollNews directly. Use the Start method of
the NewsScroller object.");
return;
}
var elmControl = document.getElementById(sControlName);
if (new Date() >= elmControl.ResumeDateTime)
{
// see whether any item is about to reach the top,
var cyOffset = 0;
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop > 0) && ((elmItem.offsetTop - ns.scrollStep) <=
0))
{
// the top of this item has reached the top of the control,
// so pause scrolling for the whole control
var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
ns.scrollPause);
elmControl.ResumeDateTime = dtResume;
cyOffset = elmItem.offsetTop;
}
}
if (cyOffset > 0)
{
// control is just now paused, so scroll all items up
// in order to put the top item flush with the top of the control
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop = elmItem.style.pixelTop - cyOffset;
}
}
else
{
// the control is not paused, so scroll every item up by one step
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop -= ns.scrollStep;


}
}
// see whether any items have scrolled off the top
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop + elmItem.offsetHeight) <= 0)
{
// the bottom of this item has scrolled beyond the top of the control,
// so move it to the bottom of the control
if (ns.itemCount > 1)
{
var sBottomItemName;
if (nItem == 0)
sBottomItemName = sControlName + (ns.itemCount - 1).toString();
else
sBottomItemName = sControlName + (nItem - 1).toString();
var elmBottomItem = document.getElementById(sBottomItemName);
elmItem.style.pixelTop = (elmBottomItem.offsetTop +
elmBottomItem.offsetHeight + ns.cySeparator) - (elmItem.offsetTop -
elmItem.style.pixelTop);
}
else
{
elmItem.style.pixelTop = elmItem.parentElement.offsetHeight;
}
}
}
}
}



"Jose A. Fernandez" wrote in message
news:
Hola verci
Primero que nada (ya que estabas 24hs probando) hubieras posteado y
seguias probando hasta que alguien te conteste en el grupo.
BUeno por lo que veo es un script en JS para hacer scroll de noticias
Mi primer pregunta es de que sitio web lo conseguiste? (mas abajo de
coloco algunos enlaces)

Bueno vamos por parte
1) <script type="text/javascript" language="JavaScript" src="c:\WebNews
ewsscroller.js" />
Esta parte la ejecuta en el cliente el explorador y quiere cargar
un archivo que esta en SU DISCO C:\ en esa ubicacion (esto lo
entiendes asi no?) Porque es fundamental que veas que lo busca el
explorador del cliente
Lo que se tiene que hacer es que ese src (source) este en una
carpeta en tu web entonces colocas asi
src="/js/newsscroller.js"
alli el browser del visitante querra cargar un archivo externo .js
del la directorio raiz de tu sitio en la carpeta js y alli dentro el
archivo newsscroller

2) scrollerMain.LoadXML('c:\\WebNews\ews.xml');
Idem para esta parte. El archivo news.xml deberia estar en tu
sitio algo asi
scrollerMain.LoadXML('http://www.tusitio.com/noticias/
news.xml');

En todo momento no veo ningun runat="server" por ello se esta
ejecutando todo en el navegador como te voy comentando... No conozco
ese script que usas. Si nos pasas o envias la pagina donde poder ver o
descargarlo mejor.



Enlaces:
-
Un ejemplo que puede ser el tuyo. Lo es?
http://javascript.internet.com/text...oller.html

Varios Scrollers (recomendado dar una mirada a todos)
http://www.dynamicdrive.com/dynamic...index.html

_______________________
Jose A. Fernandez



On 19 feb, 02:26, "verci" wrote:
Hola

Estoy usando Windows XP SP2, VS2005, IE7, ASP.Net 2.0, gracias de antemano
por su ayuda.

El problema que tengo es que cuando quiero mandar llamar el control
newsscroller en mi página ASP no se ve nada ni me marca ningún error solo
hasta que hago refresh me aparece este error del archivo .JS

Line 70
Char 13
Error scrollMain is undefined

Es exactamente el mismo código que uso en una página normal HTML la cual
carga y corre perfectamente, que estoy haciendo mal? , tengo ya 1 día
completamente frustrado y no encuentro la falla, aqui esta mi página ASP:

<%@ Page Language="VB" MasterPageFile="~/Default.master"
AutoEventWireup="false" CodeFile="Rss_news.aspx.vb" Inherits="Rss_news"
title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">

<div id="body">

<script type="text/javascript" language="JavaScript"
src="c:\WebNewsewsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('c:\\WebNews\ews.xml');

scrollerMain.StartScrolling ();

</script>

</div>

</asp:Content>
Respuesta Responder a este mensaje
#3 verci
19/02/2007 - 10:52 | Informe spam
Hola Jose,

Hice los cambios que sugeriste pero sigue sin funcionar, hice una carpeta js
dentro de wwwroot, primero te posteo la página asp con los cambios,
enseguida te posteo el script original ya que no encontre la liga, lo unico
que le modifique al script fue la function NewsScroller_LoadXML (sXmlID)
para que en lugar de sacar los elemetos de una Insla xml incrustada en la
pagina cargara la info del archivo news.xml.

************* Primero la ASP modificada *************
<div id="body">

<script type="text/javascript" language="JavaScript"
src="http://localhost/js/newsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('http://localhost/news.xml');

scrollerMain.StartScrolling ();

</script>

</div>


************* Ahora este es el script original ************
// title and copyright notice go here

// API
// These are the functions you will call to use the NewsScroller from your
web page

// NewsScroller_Initialize
// Parameters:
// elmDivForNews: object reference to a DIV element that will be used to
display the news
// Return:
// returns a NewsScroller object, with supporting properties and methods
function NewsScroller ()
{
if (window.NewsScrollerInstance != null)
{
window.alert("Only one NewsScroller control is allowed on a page.");
return;
}
window.NewsScrollerInstance = this;

this.LoadXML = NewsScroller_LoadXML;
this.AddNewsItem = NewsScroller_AddNewsItem;
this.Clear = NewsScroller_Clear;
this.StartScrolling = NewsScroller_StartScrolling;
this.StopScrolling = NewsScroller_StopScrolling;
this.Render = NewsScroller_Render;

// public properties
this.className = "";
this.itemNormalClassName = "";

this.scrollRate = 25;
this.scrollStep = 1;
this.scrollPause = 2000;

// internal use
this.RenderChildren = NewsScroller_RenderChildren;

this.renderedControl = "";
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

this.scrollEnabled = false;
}

function NewsScroller_LoadXML (sXmlID)
{
this.Clear();
var elmXml = document.getElementById(sXmlID);
var xDoc = elmXml.XMLDocument;
var xItems = xDoc.selectNodes("/Items/Item");
for (var iNode = 0; iNode < xItems.length; iNode++)
{
var xItem = xItems[iNode];
var xText = xItem.selectSingleNode("Text");
var xLink = xItem.selectSingleNode("Link");
this.AddNewsItem(xText.text, xLink.text);
}
var elmControl = document.getElementById(this.renderedControl);
this.RenderChildren(this.renderedControl);
}

function NewsScroller_AddNewsItem (strText, strLink)
{
this.itemsText[this.itemCount] = strText;
this.itemsLink[this.itemCount] = strLink;
this.itemCount++;
}

function NewsScroller_Clear ()
{
this.StopScrolling ();
var elmControl = document.getElementById(this.renderedControl);
while (elmControl.childNodes.length > 0)
elmControl.removeChild(elmControl.childNodes[0]);
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;
}

function NewsScroller_StartScrolling ()
{
if (this.itemCount > 0)
{
var sControlName = this.renderedControl;
if (sControlName == null)
{
window.alert ("You must render a control before you can start scrolling
it.");
return;
}
var elmControl = document.getElementById(sControlName);
var elmItem0 = document.getElementById("floatingNews0");
if (this.itemCount > 1)
{
var elmItem1 = document.getElementById(sControlName + "1");
this.cySeparator = (elmItem1.offsetTop - elmItem0.offsetTop) -
elmItem0.offsetHeight;
}
else
{
this.cySeparator = 0;
}

if (this.ScrollTimerID == null)
this.ScrollTimerID = window.setInterval(NewsScroller_ScrollNews,
this.scrollRate);
}
}

function NewsScroller_StopScrolling ()
{
window.clearInterval(this.ScrollTimerID);
this.ScrollTimerID = null;
}

function NewsScroller_Render(sControlID)
{
if (sControlID.length == 0)
{
window.alert("You must provide a unique ID for the rendered control.");
return;
}
var elmControl = document.getElementById(sControlID);
if (elmControl != null)
{
window.alert("A NewsScroller with this ID has already been rendered.
Please use a unique ID.");
return;
}
this.renderedControl = sControlID;

// <DIV>
document.write("<div");
document.write(" id=\"" + sControlID + "\"");
document.write(" class=\"" + this.className + "\"");
document.write(" style=\"position: relative; width: 100%; height: 100%;
\"");
document.write(">");

// </DIV>
document.write("</div>");

this.RenderChildren(sControlID);

var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
this.scrollPause);
elmControl = document.getElementById(sControlID);
elmControl.ResumeDateTime = dtResume;
}

// Supporting functions
function NewsScroller_RenderChildren()
{
var sControlID = this.renderedControl;
elmControl = document.getElementById(sControlID);

// <DIV>
elmDiv = document.createElement("div");
elmDiv.style.position = "absolute";
elmDiv.style.left = "0px";
elmDiv.style.width = "100%";
elmDiv.style.height = "100%";
elmDiv.style.overflow = "hidden";
elmControl.appendChild(elmDiv);

for (var nItem = 0; nItem < this.itemCount; nItem++)
{
var sItemName = sControlID + nItem.toString();

var elmP = document.createElement("p");
elmP.id = sItemName;
elmP.style.position = "relative";
elmP.style.top = "0px";
elmP.style.width = "100%";
elmP.className = this.itemNormalClassName;
elmDiv.appendChild(elmP);

var elmA = document.createElement("a");
elmA.className = this.itemNormalClassName;
elmA.href = this.itemsLink[nItem];
elmP.appendChild(elmA);

var tn = document.createTextNode(this.itemsText[nItem]);
elmA.appendChild(tn);

}
}

function NewsScroller_ScrollNews()
{
var ns = window.NewsScrollerInstance;
var sControlName = ns.renderedControl;
if (sControlName.length == 0)
{
window.alert ("Do not call ScrollNews directly. Use the Start method of
the NewsScroller object.");
return;
}
var elmControl = document.getElementById(sControlName);
if (new Date() >= elmControl.ResumeDateTime)
{
// see whether any item is about to reach the top,
var cyOffset = 0;
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop > 0) && ((elmItem.offsetTop - ns.scrollStep) <=
0))
{
// the top of this item has reached the top of the control,
// so pause scrolling for the whole control
var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
ns.scrollPause);
elmControl.ResumeDateTime = dtResume;
cyOffset = elmItem.offsetTop;
}
}
if (cyOffset > 0)
{
// control is just now paused, so scroll all items up
// in order to put the top item flush with the top of the control
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop = elmItem.style.pixelTop - cyOffset;
}
}
else
{
// the control is not paused, so scroll every item up by one step
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop -= ns.scrollStep;


}
}
// see whether any items have scrolled off the top
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop + elmItem.offsetHeight) <= 0)
{
// the bottom of this item has scrolled beyond the top of the control,
// so move it to the bottom of the control
if (ns.itemCount > 1)
{
var sBottomItemName;
if (nItem == 0)
sBottomItemName = sControlName + (ns.itemCount - 1).toString();
else
sBottomItemName = sControlName + (nItem - 1).toString();
var elmBottomItem = document.getElementById(sBottomItemName);
elmItem.style.pixelTop = (elmBottomItem.offsetTop +
elmBottomItem.offsetHeight + ns.cySeparator) - (elmItem.offsetTop -
elmItem.style.pixelTop);
}
else
{
elmItem.style.pixelTop = elmItem.parentElement.offsetHeight;
}
}
}
}
}
Respuesta Responder a este mensaje
#4 Jose A. Fernandez
19/02/2007 - 12:30 | Informe spam
Hola Versi
(recibi tu email tambien ademas de este post)
Segun estoy mirando rapido
function NewsScroller_LoadXML (sXmlID) {
this.Clear();
var elmXml = document.getElementById(sXmlID);
...
REcibie un ID de una variable que su contenido es un XML como bien
dices una "ISLA" (hace mucho no escuchaba ese concepto)
Tendras que pasarle la misma isla inscrustadole mediante codigo .net o
sea desde el codebehind (esto si es dinamica)
Ya que lo que hace es buscar esta variable por .getElementById

Dejame una hora (a partir de este post) entonces busco unos minutos en
mi trabajo para verificar tu script de scroll y ver como viene la mano
Un abrazo

_______________________
Jose A. Fernandez







On 19 feb, 06:52, "verci" wrote:
Hola Jose,

Hice los cambios que sugeriste pero sigue sin funcionar, hice una carpeta js
dentro de wwwroot, primero te posteo la página asp con los cambios,
enseguida te posteo el script original ya que no encontre la liga, lo unico
que le modifique al script fue la function NewsScroller_LoadXML (sXmlID)
para que en lugar de sacar los elemetos de una Insla xml incrustada en la
pagina cargara la info del archivo news.xml.

************* Primero la ASP modificada *************
<div id="body">

<script type="text/javascript" language="JavaScript"
src="http://localhost/js/newsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('http://localhost/news.xml');

scrollerMain.StartScrolling ();

</script>

</div>

************* Ahora este es el script original ************
// title and copyright notice go here

// API
// These are the functions you will call to use the NewsScroller from your
web page

// NewsScroller_Initialize
// Parameters:
// elmDivForNews: object reference to a DIV element that will be used to
display the news
// Return:
// returns a NewsScroller object, with supporting properties and methods
function NewsScroller ()
{
if (window.NewsScrollerInstance != null)
{
window.alert("Only one NewsScroller control is allowed on a page.");
return;
}
window.NewsScrollerInstance = this;

this.LoadXML = NewsScroller_LoadXML;
this.AddNewsItem = NewsScroller_AddNewsItem;
this.Clear = NewsScroller_Clear;
this.StartScrolling = NewsScroller_StartScrolling;
this.StopScrolling = NewsScroller_StopScrolling;
this.Render = NewsScroller_Render;

// public properties
this.className = "";
this.itemNormalClassName = "";

this.scrollRate = 25;
this.scrollStep = 1;
this.scrollPause = 2000;

// internal use
this.RenderChildren = NewsScroller_RenderChildren;

this.renderedControl = "";
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

this.scrollEnabled = false;

}

function NewsScroller_LoadXML (sXmlID)
{
this.Clear();
var elmXml = document.getElementById(sXmlID);
var xDoc = elmXml.XMLDocument;
var xItems = xDoc.selectNodes("/Items/Item");
for (var iNode = 0; iNode < xItems.length; iNode++)
{
var xItem = xItems[iNode];
var xText = xItem.selectSingleNode("Text");
var xLink = xItem.selectSingleNode("Link");
this.AddNewsItem(xText.text, xLink.text);
}
var elmControl = document.getElementById(this.renderedControl);
this.RenderChildren(this.renderedControl);

}

function NewsScroller_AddNewsItem (strText, strLink)
{
this.itemsText[this.itemCount] = strText;
this.itemsLink[this.itemCount] = strLink;
this.itemCount++;

}

function NewsScroller_Clear ()
{
this.StopScrolling ();
var elmControl = document.getElementById(this.renderedControl);
while (elmControl.childNodes.length > 0)
elmControl.removeChild(elmControl.childNodes[0]);
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

}

function NewsScroller_StartScrolling ()
{
if (this.itemCount > 0)
{
var sControlName = this.renderedControl;
if (sControlName == null)
{
window.alert ("You must render a control before you can start scrolling
it.");
return;
}
var elmControl = document.getElementById(sControlName);
var elmItem0 = document.getElementById("floatingNews0");
if (this.itemCount > 1)
{
var elmItem1 = document.getElementById(sControlName + "1");
this.cySeparator = (elmItem1.offsetTop - elmItem0.offsetTop) -
elmItem0.offsetHeight;
}
else
{
this.cySeparator = 0;
}

if (this.ScrollTimerID == null)
this.ScrollTimerID = window.setInterval(NewsScroller_ScrollNews,
this.scrollRate);
}

}

function NewsScroller_StopScrolling ()
{
window.clearInterval(this.ScrollTimerID);
this.ScrollTimerID = null;

}

function NewsScroller_Render(sControlID)
{
if (sControlID.length == 0)
{
window.alert("You must provide a unique ID for the rendered control.");
return;
}
var elmControl = document.getElementById(sControlID);
if (elmControl != null)
{
window.alert("A NewsScroller with this ID has already been rendered.
Please use a unique ID.");
return;
}
this.renderedControl = sControlID;

// <DIV>
document.write("<div");
document.write(" id=\"" + sControlID + "\"");
document.write(" class=\"" + this.className + "\"");
document.write(" style=\"position: relative; width: 100%; height: 100%;
\"");
document.write(">");

// </DIV>
document.write("</div>");

this.RenderChildren(sControlID);

var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
this.scrollPause);
elmControl = document.getElementById(sControlID);
elmControl.ResumeDateTime = dtResume;

}

// Supporting functions
function NewsScroller_RenderChildren()
{
var sControlID = this.renderedControl;
elmControl = document.getElementById(sControlID);

// <DIV>
elmDiv = document.createElement("div");
elmDiv.style.position = "absolute";
elmDiv.style.left = "0px";
elmDiv.style.width = "100%";
elmDiv.style.height = "100%";
elmDiv.style.overflow = "hidden";
elmControl.appendChild(elmDiv);

for (var nItem = 0; nItem < this.itemCount; nItem++)
{
var sItemName = sControlID + nItem.toString();

var elmP = document.createElement("p");
elmP.id = sItemName;
elmP.style.position = "relative";
elmP.style.top = "0px";
elmP.style.width = "100%";
elmP.className = this.itemNormalClassName;
elmDiv.appendChild(elmP);

var elmA = document.createElement("a");
elmA.className = this.itemNormalClassName;
elmA.href = this.itemsLink[nItem];
elmP.appendChild(elmA);

var tn = document.createTextNode(this.itemsText[nItem]);
elmA.appendChild(tn);

}

}

function NewsScroller_ScrollNews()
{
var ns = window.NewsScrollerInstance;
var sControlName = ns.renderedControl;
if (sControlName.length == 0)
{
window.alert ("Do not call ScrollNews directly. Use the Start method of
the NewsScroller object.");
return;
}
var elmControl = document.getElementById(sControlName);
if (new Date() >= elmControl.ResumeDateTime)
{
// see whether any item is about to reach the top,
var cyOffset = 0;
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop > 0) && ((elmItem.offsetTop - ns.scrollStep) <> 0))
{
// the top of this item has reached the top of the control,
// so pause scrolling for the whole control
var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
ns.scrollPause);
elmControl.ResumeDateTime = dtResume;
cyOffset = elmItem.offsetTop;
}
}
if (cyOffset > 0)
{
// control is just now paused, so scroll all items up
// in order to put the top item flush with the top of the control
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop = elmItem.style.pixelTop - cyOffset;
}
}
else
{
// the control is not paused, so scroll every item up by one step
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop -= ns.scrollStep;

}
}
// see whether any items have scrolled off the top
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop + elmItem.offsetHeight) <= 0)
{
// the bottom of this item has scrolled beyond the top of the control,
// so move it to the bottom of the control
if (ns.itemCount > 1)
{
var sBottomItemName;
if (nItem == 0)
sBottomItemName = sControlName + (ns.itemCount - 1).toString();
else
sBottomItemName = sControlName + (nItem - 1).toString();
var elmBottomItem = document.getElementById(sBottomItemName);
elmItem.style.pixelTop = (elmBottomItem.offsetTop +
elmBottomItem.offsetHeight + ns.cySeparator) - (elmItem.offsetTop -
elmItem.style.pixelTop);
}
else
{
elmItem.style.pixelTop = elmItem.parentElement.offsetHeight;
}
}
}
}

}
Respuesta Responder a este mensaje
#5 verci
19/02/2007 - 19:30 | Informe spam
Hola de nuevo Jose,

Checa esta es mi función NewsScroller_LoadXML (sXmlID), como podras ver en
lugar de pasarle el sXmlID que es un string del ID de la isla, le paso el
string del documento news.xml, todo lo demas quedo igual en el script
original que te mande y como te comento en una pagina html normal todo
funciona bien, estoy confundido, gracias por echarme la mano, un saludo.

function NewsScroller_LoadXML (sXmlID)
{
this.Clear();
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load(sXmlID);
var xItems = xmlDoc.getElementsByTagName('item');
for (var iNode = 0; iNode < xItems.length; iNode++)
.. etc



"Jose A. Fernandez" wrote in message
news:
Hola Versi
(recibi tu email tambien ademas de este post)
Segun estoy mirando rapido
function NewsScroller_LoadXML (sXmlID) {
this.Clear();
var elmXml = document.getElementById(sXmlID);
...
REcibie un ID de una variable que su contenido es un XML como bien
dices una "ISLA" (hace mucho no escuchaba ese concepto)
Tendras que pasarle la misma isla inscrustadole mediante codigo .net o
sea desde el codebehind (esto si es dinamica)
Ya que lo que hace es buscar esta variable por .getElementById

Dejame una hora (a partir de este post) entonces busco unos minutos en
mi trabajo para verificar tu script de scroll y ver como viene la mano
Un abrazo

_______________________
Jose A. Fernandez







On 19 feb, 06:52, "verci" wrote:
Hola Jose,

Hice los cambios que sugeriste pero sigue sin funcionar, hice una carpeta
js
dentro de wwwroot, primero te posteo la página asp con los cambios,
enseguida te posteo el script original ya que no encontre la liga, lo
unico
que le modifique al script fue la function NewsScroller_LoadXML (sXmlID)
para que en lugar de sacar los elemetos de una Insla xml incrustada en la
pagina cargara la info del archivo news.xml.

************* Primero la ASP modificada *************
<div id="body">

<script type="text/javascript" language="JavaScript"
src="http://localhost/js/newsscroller.js" />

<script type="text/javascript">

var scrollerMain = new NewsScroller("main");

</script>

<div style="float: right; width: 150px; height: 160px;"
onmouseover="javascript:scrollerMain.StopScrolling();"

onmouseout="javascript:scrollerMain.StartScrolling();">

<script type="text/javascript">

scrollerMain.Render("floatingNews");

</script>

</div>

<script type="text/javascript">

scrollerMain.LoadXML('http://localhost/news.xml');

scrollerMain.StartScrolling ();

</script>

</div>

************* Ahora este es el script original ************
// title and copyright notice go here

// API
// These are the functions you will call to use the NewsScroller from your
web page

// NewsScroller_Initialize
// Parameters:
// elmDivForNews: object reference to a DIV element that will be used to
display the news
// Return:
// returns a NewsScroller object, with supporting properties and methods
function NewsScroller ()
{
if (window.NewsScrollerInstance != null)
{
window.alert("Only one NewsScroller control is allowed on a page.");
return;
}
window.NewsScrollerInstance = this;

this.LoadXML = NewsScroller_LoadXML;
this.AddNewsItem = NewsScroller_AddNewsItem;
this.Clear = NewsScroller_Clear;
this.StartScrolling = NewsScroller_StartScrolling;
this.StopScrolling = NewsScroller_StopScrolling;
this.Render = NewsScroller_Render;

// public properties
this.className = "";
this.itemNormalClassName = "";

this.scrollRate = 25;
this.scrollStep = 1;
this.scrollPause = 2000;

// internal use
this.RenderChildren = NewsScroller_RenderChildren;

this.renderedControl = "";
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

this.scrollEnabled = false;

}

function NewsScroller_LoadXML (sXmlID)
{
this.Clear();
var elmXml = document.getElementById(sXmlID);
var xDoc = elmXml.XMLDocument;
var xItems = xDoc.selectNodes("/Items/Item");
for (var iNode = 0; iNode < xItems.length; iNode++)
{
var xItem = xItems[iNode];
var xText = xItem.selectSingleNode("Text");
var xLink = xItem.selectSingleNode("Link");
this.AddNewsItem(xText.text, xLink.text);
}
var elmControl = document.getElementById(this.renderedControl);
this.RenderChildren(this.renderedControl);

}

function NewsScroller_AddNewsItem (strText, strLink)
{
this.itemsText[this.itemCount] = strText;
this.itemsLink[this.itemCount] = strLink;
this.itemCount++;

}

function NewsScroller_Clear ()
{
this.StopScrolling ();
var elmControl = document.getElementById(this.renderedControl);
while (elmControl.childNodes.length > 0)
elmControl.removeChild(elmControl.childNodes[0]);
this.itemsText = new Array();
this.itemsLink = new Array();
this.itemCount = 0;

}

function NewsScroller_StartScrolling ()
{
if (this.itemCount > 0)
{
var sControlName = this.renderedControl;
if (sControlName == null)
{
window.alert ("You must render a control before you can start scrolling
it.");
return;
}
var elmControl = document.getElementById(sControlName);
var elmItem0 = document.getElementById("floatingNews0");
if (this.itemCount > 1)
{
var elmItem1 = document.getElementById(sControlName + "1");
this.cySeparator = (elmItem1.offsetTop - elmItem0.offsetTop) -
elmItem0.offsetHeight;
}
else
{
this.cySeparator = 0;
}

if (this.ScrollTimerID == null)
this.ScrollTimerID = window.setInterval(NewsScroller_ScrollNews,
this.scrollRate);
}

}

function NewsScroller_StopScrolling ()
{
window.clearInterval(this.ScrollTimerID);
this.ScrollTimerID = null;

}

function NewsScroller_Render(sControlID)
{
if (sControlID.length == 0)
{
window.alert("You must provide a unique ID for the rendered control.");
return;
}
var elmControl = document.getElementById(sControlID);
if (elmControl != null)
{
window.alert("A NewsScroller with this ID has already been rendered.
Please use a unique ID.");
return;
}
this.renderedControl = sControlID;

// <DIV>
document.write("<div");
document.write(" id=\"" + sControlID + "\"");
document.write(" class=\"" + this.className + "\"");
document.write(" style=\"position: relative; width: 100%; height: 100%;
\"");
document.write(">");

// </DIV>
document.write("</div>");

this.RenderChildren(sControlID);

var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
this.scrollPause);
elmControl = document.getElementById(sControlID);
elmControl.ResumeDateTime = dtResume;

}

// Supporting functions
function NewsScroller_RenderChildren()
{
var sControlID = this.renderedControl;
elmControl = document.getElementById(sControlID);

// <DIV>
elmDiv = document.createElement("div");
elmDiv.style.position = "absolute";
elmDiv.style.left = "0px";
elmDiv.style.width = "100%";
elmDiv.style.height = "100%";
elmDiv.style.overflow = "hidden";
elmControl.appendChild(elmDiv);

for (var nItem = 0; nItem < this.itemCount; nItem++)
{
var sItemName = sControlID + nItem.toString();

var elmP = document.createElement("p");
elmP.id = sItemName;
elmP.style.position = "relative";
elmP.style.top = "0px";
elmP.style.width = "100%";
elmP.className = this.itemNormalClassName;
elmDiv.appendChild(elmP);

var elmA = document.createElement("a");
elmA.className = this.itemNormalClassName;
elmA.href = this.itemsLink[nItem];
elmP.appendChild(elmA);

var tn = document.createTextNode(this.itemsText[nItem]);
elmA.appendChild(tn);

}

}

function NewsScroller_ScrollNews()
{
var ns = window.NewsScrollerInstance;
var sControlName = ns.renderedControl;
if (sControlName.length == 0)
{
window.alert ("Do not call ScrollNews directly. Use the Start method of
the NewsScroller object.");
return;
}
var elmControl = document.getElementById(sControlName);
if (new Date() >= elmControl.ResumeDateTime)
{
// see whether any item is about to reach the top,
var cyOffset = 0;
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop > 0) && ((elmItem.offsetTop - ns.scrollStep) <> 0))
{
// the top of this item has reached the top of the control,
// so pause scrolling for the whole control
var dtNow = new Date();
var dtResume = new Date(dtNow.getFullYear(), dtNow.getMonth(),
dtNow.getDate(), dtNow.getHours(), dtNow.getMinutes(), dtNow.getSeconds(),
ns.scrollPause);
elmControl.ResumeDateTime = dtResume;
cyOffset = elmItem.offsetTop;
}
}
if (cyOffset > 0)
{
// control is just now paused, so scroll all items up
// in order to put the top item flush with the top of the control
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop = elmItem.style.pixelTop - cyOffset;
}
}
else
{
// the control is not paused, so scroll every item up by one step
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
elmItem.style.pixelTop -= ns.scrollStep;

}
}
// see whether any items have scrolled off the top
for (var nItem = 0; nItem < ns.itemCount; nItem++)
{
var sItemName = sControlName + nItem.toString();
var elmItem = document.getElementById(sItemName);
if ((elmItem.offsetTop + elmItem.offsetHeight) <= 0)
{
// the bottom of this item has scrolled beyond the top of the control,
// so move it to the bottom of the control
if (ns.itemCount > 1)
{
var sBottomItemName;
if (nItem == 0)
sBottomItemName = sControlName + (ns.itemCount - 1).toString();
else
sBottomItemName = sControlName + (nItem - 1).toString();
var elmBottomItem = document.getElementById(sBottomItemName);
elmItem.style.pixelTop = (elmBottomItem.offsetTop +
elmBottomItem.offsetHeight + ns.cySeparator) - (elmItem.offsetTop -
elmItem.style.pixelTop);
}
else
{
elmItem.style.pixelTop = elmItem.parentElement.offsetHeight;
}
}
}
}

}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida