Avatar billede Nicklas_J Nybegynder
03. februar 2010 - 21:40 Der er 13 kommentarer og
1 løsning

JS + MARQUEE = IE Problem?

Hej.
Har dette stykke kode:
<span class="text1"><marquee onmouseover=this.stop() onmouseout=this.start() direction="left" scrollamount="2" height="20" width="236"><div id="wtf"></div></marquee></span>

Som virker fint i Firefox:
div'en med id "wtf" viser siden headlines.php og den opdateres hvert 5 sek med ajax javascript.

Men i Internet Explore, så vises der slet ikke noget.. Har prøvet af fjerne div boxen og skrive "test" og det virker, men det lader til at IE ikke vil vise hvis man kombinere ajax script div box + marquee?
Her er ajax script hvis det kan hjælpe:

// ajax_update
var _v = 0;
var _v2 = 1;


var _v = 0;
var _v2 = 1;

function ajax_update()
{
    var wrapperId     =    '#wtf';
    var postFile    =    'headlines.php';
   
    _v++;
    _v2++;
      $.post(postFile, { v2: _v2 , v: _v},
      function(data){
          $(wrapperId).html(data);
      });
    setTimeout('ajax_update()', 10000);




Mvh.
Avatar billede Nicklas_J Nybegynder
03. februar 2010 - 22:25 #1
Fandt lige ud af at selvom det IKKE var med marquee's så viser den ikke noget i IE, men kun i firefox?!
Avatar billede intenz Novice
03. februar 2010 - 22:33 #2
Har du et link vi kan se? Det er lidt svært at gætte på uden.
Avatar billede Nicklas_J Nybegynder
03. februar 2010 - 23:45 #3
Ja, her:
http://leinstein.dk/

Du kan se "Hejsa" som er hentet gennem jquery ajax script, fra filen ok.php..

men gå så ind på IE, http://leinstein.dk/ , der kommer intet
Avatar billede intenz Novice
04. februar 2010 - 14:25 #4
En ide kunne være, at du starter med at lave korrekt html på siden.

Din side har hverken en afsluttende </body> eller </html> nederst. Det er ikke for sjov de skal være der :)
Avatar billede Nicklas_J Nybegynder
04. februar 2010 - 18:39 #5
Hmm, troede ikke det betød noget. Men har gjort det nu, og der er ikke sket så meget.
Avatar billede intenz Novice
05. februar 2010 - 12:43 #6
Har du tjekket om dit ajax kald kører igennem?

Prøv at ændre til:
$.post(postFile, { v2: _v2 , v: _v},
      function(data){
          alert(data);
          $(wrapperId).html(data);
      });
Avatar billede Nicklas_J Nybegynder
05. februar 2010 - 13:13 #7
Sådan. Nu kommer der alert med "hejsa" i.. + blir der postet "Hejsa".. dvs den kører igennem.

Men sjovt nok så i IE er det bare en blank side, hverken alert eller noget.

Hmm.. Det er ligesom at ajax scriptet(js) ikke understøttes af IE.
Avatar billede intenz Novice
05. februar 2010 - 13:17 #8
Okay, så kom vi lidt videre :)

Prøv at sæt:
alert('test');

over:
$.post(postFile, { v2: _v2 , v: _v},

Så kan du se om din funktion bliver kørt i ie.
Avatar billede intenz Novice
05. februar 2010 - 13:20 #9
Det kan måske være fordi du ikke har '' rundt om dine variabler.

Test med:
'v2': _v2 , 'v': _v
Avatar billede Nicklas_J Nybegynder
05. februar 2010 - 16:29 #10
Hej.
Har prøvet alert('test');, over $.post(postFile, { v2: _v2 , v: _v}, og nu sker der noget... Der kommer popup i IE med "test" (du kan selv lige prøve http://www.leinstein.dk ) , og den kommer hvert 10 sekund..

Så fejlen må dvs. være her omkring:
      function(data){
          alert(data);
          $(wrapperId).html(data);
      }); 

Og ved ikke om det betyder noget ( er ik så god til js ) men, har ikke fundet nogle steder i scriptet der den kalder function(data), så den blir jo overhovedet ikke brugt..? Eller gør den? Fordi det virker jo i firefox..

Tjek selv scriptet som jeg postede i starten.

Har desuden prøvet ''er gav ikke nogle ændringer..
Avatar billede intenz Novice
05. februar 2010 - 17:03 #11
Den funktion er en callback funktion, den bliver kaldt når ajax kaldet bliver returneret fra serveren. Så den er som den skal være.

Nå, jeg prøvede et par ting. Og det gjorde det bare mere underligt.

Jeg brugte http://www.fiddler2.com/
Der kan man downloade et program der kan se hvilke trafik der bliver sendt. Der kunne jeg så se, at ajax kaldet gik igennem til serveren og resultatet 'Hejsa' blev returneret (ligesom i firefox). Problemet er så, at din callback funktion ikke bliver kaldt.

Jeg prøvede så at kopiere dit script og index fil ned på min localhost. Og lavede en ok.php fil med 'Hejsa'.
Der virkede det helt fint, både i IE og firefox.

Så jeg må indrømme jeg ikke har nogen ide om hvorfor det ikke virker på dit domæne... Det er lidt mystisk.

Jeg har desværre ikke rigtig flere ting jeg kan komme med. Det ville være rene gæt der formegentlig ikke hjælper dig.

Bare lige en sidste ting du kan teste. En helt basic test af om du får et svar.


<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
function ajax_update() {
    $.post("ok.php", function(data){
      alert("Data Loaded: " + data);
    });
    setTimeout('ajax_update()', 10000);
}
</script>
</head>
<body onload="ajax_update();">
<div id="wtf"></div>
</body>
</html>
Avatar billede Nicklas_J Nybegynder
05. februar 2010 - 17:50 #12
Hej.
Har aldrig været udsat for sådan noget lign før hvor det virker i ene browser, men ikke den anden.

Scriptet du kom med virker fint i firefox...men staadig ikke i IE.

Kan jeg ikke på en eller anden måde kalde funktionen så? Eller lave en ny funktion og så kalde den i body onload i selve siden hvor <div boksen er henne? Noget i den stil..
Avatar billede Nicklas_J Nybegynder
05. februar 2010 - 18:49 #13
Har lige søgt lidt.. Problemet er godt kendt at IE kræver mer detaljer, eller noget i den stil, men kan stadig ikke finde noget relevant til mit problem :(
Avatar billede Nicklas_J Nybegynder
06. februar 2010 - 10:54 #14
Har fået løst det nu!
Det viser sig at jeg skulle definere content-type, og sætte cachecontrol til none ( Vha header(); ) i ok.php. Nu virker det :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester