webForumDet fria alternativet

Problem med javatext-scroller

5 svar · 190 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 687 inlägg
#1

Hej!

Har stött på problem när jag försöker implementera Mike's DHTML scroller på min sida. Använder Firefox. Följande kod har jag laborerat med:

<div id="tempholder"></div>
<script language="JavaScript" src="dhtmllib.js"></script>
<script language="JavaScript" src="scroller.js"></script>
<script language="JavaScript">

/*
Mike's DHTML scroller (By Mike Hall)
Last updated July 21st, 02' by Dynamic Drive for NS6 functionality
For this and 100's more DHTML scripts, visit [url]http://www.dynamicdrive.com[/url]
*/

//SET SCROLLER APPEARANCE AND MESSAGES
var myScroller1 = new Scroller(0, 0, 480, 32, 1, 5); //(xpos, ypos, width, height, border, padding)
myScroller1.setColors("#006600", "#ccffcc", "#009900"); //(fgcolor, bgcolor, bdcolor)
myScroller1.setFont("Verdana,Arial,Helvetica", 2);
myScroller1.addItem("<b>Click here for <a href='http://dynamicdrive.com'>Dynamic Drive</a>, the net\'s #1 DHTML site!</b>");
myScroller1.addItem("<b>Visit <a href='http://www.brainjar.com'>Brain Jar</a>, Mike\'s great coding site!</b>");
myScroller1.addItem("<b>Looking for free JavaScripts? Visit <a href='http://javascriptkit.com'>JavaScript Kit.</a>");
myScroller1.addItem("<b>Discuss and get help on web coding, at <a href='http://www.codingforums.com'>CodingForums.com</a></b>");

//SET SCROLLER PAUSE
myScroller1.setPause(2500); //set pause beteen msgs, in milliseconds

function runmikescroll() {

  var layer;
  var mikex, mikey;

  // Locate placeholder layer so we can use it to position the scrollers.

  layer = getLayer("placeholder");
  mikex = getPageLeft(layer);
  mikey = getPageTop(layer);

  // Create the first scroller and position it.

  myScroller1.create();
  myScroller1.hide();
  myScroller1.moveTo(mikex, mikey);
  myScroller1.setzIndex(100);
  myScroller1.show();
}

window.onload=runmikescroll
</script>
<div id="placeholder" style="position:relative; width:420px; height:32px;"> </div>

Koden ovan fungerar helt okej när man stoppar in den i en tom html-sida och visar i Firefox. Ett fungerande exempel kan ni se se i ett exempel som finns på Mike's hemsida eftersom jag just nu sitter och jobbar med detta lokalt på min dator.

När jag sökte på ett annat forum (Codingforums.com) hittade jag följande information som hjälpte mig komma på vad problemet var:

"If I take the DOCTYPE out the script works fine. Only the XHTML 1.1 DOCTYPE seems to effect it. Other HTML doctypes work fine. Does anyone know why the DOCTYPE makes FireFox mess it up?"

Det verkar alltså vara så att min DOCTYPE (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">) som jag använder ställer till problem för hur detta lilla javaskript visas i webbläsaren.

Någon som har råkat ut för detta förut? Tar jag bort DOCTYPE så ser sidan helt okej ut i FF men i IE ser den katastrofal ut. Alltså är inte detta ett alternativ att utelämna den.

Tips? :)

missModestyMedlem sedan apr. 2005228 inlägg
#2

Jag har aldrig använt xhtml så jag har ingen aning om detta kan vara felet. Man ska väl ha sluttaggar till allt och på ett ställe saknas det till <b>.

myScroller1.addItem("<b>Looking for free JavaScripts? Visit <a href='http://javascriptkit.com'>JavaScript Kit.</a>");

Säkert inte det, men det var vad jag kunde se...

lillebrorMedlem sedan apr. 20041 687 inlägg
#3

Nu har jag laddat upp två olika exempel. Ett där jag EJ använder någon doctype och ett där jag använder doctype. För att felet ska visas "korrekt" bör man använda Firefox.

Med DOCTYPE:
Javascroller med DOCTYPE

Utan DOCTYPE:
Javascroller utan DOCTYPE

missModestyMedlem sedan apr. 2005228 inlägg
#4

Ett möjligt problem kan vara i scroller.js som använder document.write vilket visst inte ska funka i xhtml

http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite

lillebrorMedlem sedan apr. 20041 687 inlägg
#5

Hmmm...när jag har läst det som rör document.write så verkar DOM va det man ska använda sig av?

**"Does document.write work in XHTML?

No. Because of the way XML is defined, it is not possible to do tricks like this, where markup is generated by scripting while the parser is still parsing the markup.

You can still achieve the same effects, but you have to do it by using the DOM to add and delete elements."**

zcorpanMedlem sedan dec. 20042 269 inlägg
#6

Eftersom båda exempel använder MIME typen text/html så är de HTML (även om DOCTYPEn säger annat), därför funkar document.write(). Om man använder en XML MIME type så funkar inte document.write() längre (för närvarande).

Testa med följande DOCTYPE som också ger Standards mode för text/html-dokument:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

Det är Quirks mode vs. Standards mode som är problemet.

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb