Go Back   CodingForums.com > :: Client side development > JavaScript programming > Ajax and Design

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 05-05-2009, 05:45 PM   PM User | #1
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Ajax news bar problem

Hello,
I have this script;

Code:
<html>
<head>
<script type="text/JavaScript" language="JavaScript">
var xmlHttp=false;
try {
xmlHttp = new ActiveXObject("Msxml2.xmlHttp");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.xmlHttp");
}
catch (E) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest!='undefined') {
try {
xmlHttp = new XMLHttpRequest();
}
catch (e) {
xmlHttp=false;
}
}
if (!xmlHttp && window.createRequest) {
try {
xmlHttp = window.createRequest();
}
catch (e) {
xmlHttp=false;
}
}
function callServer(){
//burada çağiracağin sayfayı yazarsın
var url = "xml.php";
 
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;{
if (xmlHttp.readyState==4) {
alert(xmlHttp.responseText)
}
}
xmlHttp.send(null)
}
function updatePage(){
//4 sorun yoksa demek
if(xmlHttp.readyState == 4){
//gelen cevap
var response = xmlHttp.responseText;
//hangi div gelcekse buraya yazılcak
TICKER.innerHTML = response;
//500 milisaniyede bir fonksiyonu cağirir
setTimeout('callServer()',5000);
}
}
callServer('url');
</script>
</head>
<div STYLE="display:none; border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; overflow:hidden; background-color:#FFFFFF; width:620px" onmouseover="TICKER_PAUSED=true" onmouseout="TICKER_PAUSED=false" id="TICKER">DSADADA</div>

<script type="text/javascript" src="webticker_lib.js" language="javascript"></script>

</html>
When TICKER DIV is updated, the news bar starts not ticking in Firefox. In Internet Explorer, TICKER DIV is sometimes updating, sometimes not. How can we fix this problem? Thank you,
Richy is offline   Reply With Quote
Old 05-05-2009, 05:47 PM   PM User | #2
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Also, this is the content of webticker_lib.js;

Code:
TICKER_CONTENT = document.getElementById("TICKER").innerHTML;
 
TICKER_RIGHTTOLEFT = false;
TICKER_SPEED = 2;
TICKER_STYLE = "font-family:Arial; font-size:12px; color:#444444";
TICKER_PAUSED = false;

ticker_start();

function ticker_start() {
    var tickerSupported = false;
    TICKER_WIDTH = document.getElementById("TICKER").style.width;
    var img = "<img src=ticker_space.gif width="+TICKER_WIDTH+" height=0>";

    // Firefox
    if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Safari")!=-1) {
        document.getElementById("TICKER").innerHTML = "<TABLE  cellspacing='0' cellpadding='0' width='100%'><TR><TD nowrap='nowrap'>"+img+"<SPAN style='"+TICKER_STYLE+"' ID='TICKER_BODY' width='100%'>&nbsp;</SPAN>"+img+"</TD></TR></TABLE>";
        tickerSupported = true;
    }
    // IE
    if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1) {
        document.getElementById("TICKER").innerHTML = "<DIV nowrap='nowrap' style='width:100%;'>"+img+"<SPAN style='"+TICKER_STYLE+"' ID='TICKER_BODY' width='100%'></SPAN>"+img+"</DIV>";
        tickerSupported = true;
    }
    if(!tickerSupported) document.getElementById("TICKER").outerHTML = ""; else {
        document.getElementById("TICKER").scrollLeft = TICKER_RIGHTTOLEFT ? document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth : 0;
        document.getElementById("TICKER_BODY").innerHTML = TICKER_CONTENT;
        document.getElementById("TICKER").style.display="block";
        TICKER_tick();
    }
}

function TICKER_tick() {
    if(!TICKER_PAUSED) document.getElementById("TICKER").scrollLeft += TICKER_SPEED * (TICKER_RIGHTTOLEFT ? -1 : 1);
    if(TICKER_RIGHTTOLEFT && document.getElementById("TICKER").scrollLeft <= 0) document.getElementById("TICKER").scrollLeft = document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth;
    if(!TICKER_RIGHTTOLEFT && document.getElementById("TICKER").scrollLeft >= document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth) document.getElementById("TICKER").scrollLeft = 0;
    window.setTimeout("TICKER_tick()", 30);
}
Richy is offline   Reply With Quote
Old 05-05-2009, 07:12 PM   PM User | #3
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Hi,
I changed the code as;

Code:
if(xmlHttp.readyState == 4){
var response = xmlHttp.responseText;
TICKER.innerHTML = response;
setTimeout('callServer()',5000);
TICKER_CONTENT = document.getElementById("TICKER").innerHTML;
TICKER_RIGHTTOLEFT = false;
TICKER_SPEED = 2;
TICKER_STYLE = "font-family:Arial; font-size:12px; color:#444444";
TICKER_PAUSED = false;
ticker_start(); 
}
Now, the content is ticking in Firefox. However, now the text accelerates continuously . What's the crazy problem?
Richy is offline   Reply With Quote
Old 05-07-2009, 04:14 PM   PM User | #4
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Any idea ?
Richy is offline   Reply With Quote
Old 05-07-2009, 09:26 PM   PM User | #5
A1ien51
Senior Coder

 
A1ien51's Avatar
 
Join Date: Jun 2002
Location: Between DC and Baltimore In a Cave
Posts: 2,717
Thanks: 1
Thanked 94 Times in 88 Posts
A1ien51 will become famous soon enough
store your timeout into a variable
Code:
ticktock = window.setTimeout("TICKER_tick()", 30);
and you need to cancel it when you get the Ajax call back
Code:
if(xmlHttp.readyState == 4){
  var response = xmlHttp.responseText;
  TICKER.innerHTML = response;
  setTimeout('callServer()',5000);
  TICKER_CONTENT = document.getElementById("TICKER").innerHTML;
  TICKER_RIGHTTOLEFT = false;
  TICKER_SPEED = 2;
  TICKER_STYLE = "font-family:Arial; font-size:12px; color:#444444";
  TICKER_PAUSED = false;
  window.clearTimeout(ticktock);
  ticker_start(); 
}
Eric
__________________
Tech Author [Ajax In Action, JavaScript: Visual Blueprint]
A1ien51 is offline   Reply With Quote
Old 05-07-2009, 10:23 PM   PM User | #6
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Quote:
Originally Posted by A1ien51 View Post
store your timeout into a variable
Code:
ticktock = window.setTimeout("TICKER_tick()", 30);
and you need to cancel it when you get the Ajax call back
Code:
if(xmlHttp.readyState == 4){
  var response = xmlHttp.responseText;
  TICKER.innerHTML = response;
  setTimeout('callServer()',5000);
  TICKER_CONTENT = document.getElementById("TICKER").innerHTML;
  TICKER_RIGHTTOLEFT = false;
  TICKER_SPEED = 2;
  TICKER_STYLE = "font-family:Arial; font-size:12px; color:#444444";
  TICKER_PAUSED = false;
  window.clearTimeout(ticktock);
  ticker_start(); 
}
Eric
Hi,
Where can I store the variable in these codes?
Richy is offline   Reply With Quote
Old 05-07-2009, 10:37 PM   PM User | #7
A1ien51
Senior Coder

 
A1ien51's Avatar
 
Join Date: Jun 2002
Location: Between DC and Baltimore In a Cave
Posts: 2,717
Thanks: 1
Thanked 94 Times in 88 Posts
A1ien51 will become famous soon enough
ticktock is the variable I was talking about.
__________________
Tech Author [Ajax In Action, JavaScript: Visual Blueprint]
A1ien51 is offline   Reply With Quote
Old 05-07-2009, 10:42 PM   PM User | #8
Richy
New Coder

 
Join Date: Mar 2008
Posts: 20
Thanks: 2
Thanked 0 Times in 0 Posts
Richy is an unknown quantity at this point
Quote:
Originally Posted by A1ien51 View Post
ticktock is the variable I was talking about.
I can't understand anything about Javascript. I tried to change;

Code:
if(xmlHttp.readyState == 4){
  var response = xmlHttp.responseText;
  TICKER.innerHTML = response;
  setTimeout('callServer()',5000);
  TICKER_CONTENT = document.getElementById("TICKER").innerHTML;
  TICKER_RIGHTTOLEFT = false;
  TICKER_SPEED = 2;
  TICKER_STYLE = "font-family:Arial; font-size:12px; color:#444444";
  TICKER_PAUSED = false;
  window.clearTimeout(ticktock);
  ticker_start(); 
}
And I added

Code:
ticktock = window.setTimeout("TICKER_tick()", 30);
in begining of the codes. Nothing changed :S..
Richy is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:32 AM.


Advertisement
Log in to turn off these ads.