Archief - HTML/JS: Crossbrowser probleem JS en XML

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tha_rippa1be

Legacy Member
Ik heb iets gemaakt om gemakkelijk webcomics te bekijken op 1 pagina en alles werkt in Opera maar in IE werkt het maar gedeeltelijk en in FF compleet niet.
In IE vult hij enkel de select op, maar er gebeurt niets als ik er op klik.

Het automatisch zoeken werkt niet bij penny-arcade en er is nog een probleem wanneer er geen comics gevonden worden, maar daar gaat het niet om, het gaat me vooral om het cross-browser probleem.

code: (kan ook hier gevonden worden.)
HTML:
<html>
<head>
  <script language="JavaScript">
    var comicUrlType="";
    var comicUrl="";
    var comicWeb="";
    var currDate=new Date();
    var lastclick="";
    var nif = 0;
    function fillComicSelect(){
      var xmldata = document.getElementById("wcvList");
      var comics = xmldata.getElementsByTagName("comic");
      
      for(var I=0; I < comics.length; I++){
        var currentComic = comics[I];
        var newComicOption = document.createElement("option");
        var comicName = document.createTextNode(currentComic.getElementsByTagName("name")[0].firstChild.data);
        newComicOption.appendChild(comicName);
        document.getElementById("comicSelect").appendChild(newComicOption);
      }
    }
    function replaceDats(UrlType){
      var linkStr="";
      var dY = currDate.getFullYear();
      var dy = new String(currDate.getFullYear()); dy=dy.substring(2);
      var dm = "0" + (currDate.getMonth()+1); dm=dm.substring(dm.length-2);
      var dd = "0" + currDate.getDate(); dd=dd.substring(dd.length-2);
      
      linkStr=UrlType.replace(/{Y}/g,dY);
      linkStr=linkStr.replace(/{y}/g,dy);
      linkStr=linkStr.replace(/{m}/g,dm);
      linkStr=linkStr.replace(/{d}/g,dd);
      
      return linkStr;
    }
    function loadComic(){
      var xmldata = document.getElementById("wcvList");
      var comics = xmldata.getElementsByTagName("comic");
      document.getElementById("comicImage").style="display:block";
      for(var I=0; I < comics.length; I++){
        var currentComic = comics[I];
        if(currentComic.getElementsByTagName("name")[0].firstChild.data==document.getElementById('comicSelect').value){
          comicUrlType=currentComic.getElementsByTagName("imgaddr")[0].firstChild.data;
          comicWeb=currentComic.getElementsByTagName("website")[0].firstChild.data;
          break;
        }
      }
      comicUrl=replaceDats(comicUrlType);      
      document.getElementById("comicImage").src=comicUrl;
    }
    function noImageFound(){
      nif++;
      if(nif<=30){
        if(lastclick=="prev"){
          previousComic();
        }else if(lastclick=="next"){
          nextComic();
        }else{
          previousComic();
        }
      }else{
        alert('No comics found within 30 days, going back to last comic.');
        initialise();
      }
    }
    function previousComic(){
      currDate.setDate(currDate.getDate()-1);
      lastclick="prev";
      loadComic();
    }
    function nextComic(){
      currDate.setDate(currDate.getDate()+1);
      lastclick="next";
      loadComic();
    }
    function initialise(){
      var lastclick="";
      nif=0;
      currDate=new Date();
      loadComic();
    }
  </script>
</head>
<body onload="fillComicSelect()">
<xml id="wcvList" style="display:none;">
  <comics>
    <comic>
      <name>Penny-arcade</name>
      <imgaddr>http://www.penny-arcade.com/images/{Y}/{Y}{m}{d}.jpg</imgaddr>
      <website>http://www.penny-arcade.com/</website>
    </comic>
    <comic>
      <name>VG Cats</name>
      <imgaddr>http://www.vgcats.com/comics/images/{y}{m}{d}.jpg</imgaddr>
      <website>http://www.vgcats.com/</website>
    </comic>
    <comic>
      <name>Ctrl+Alt+Del</name>
      <imgaddr>http://ctrlaltdel-online.com/comics/{Y}{m}{d}.jpg</imgaddr>
      <website>http://ctrlaltdel-online.com/</website>
    </comic>
    <comic>
      <name>8 bit theatre</name>
      <imgaddr>http://www.nuklearpower.com/comics/{y}{m}{d}.png</imgaddr>
      <website>http://www.nuklearpower.com/latest.php</website>
    </comic>
    <comic>
      <name>GU comics</name>
      <imgaddr>http://gucomics.com/comics/{Y}/gu_{Y}{m}{d}.jpg</imgaddr>
      <website>http://www.gucomics.com/comic/</website>
    </comic>
    <comic>
      <name>Warp Drive Active</name>
      <imgaddr>http://winterblink.com/wda/strips/{Y}-{m}-{d}.jpg</imgaddr>
      <website>http://winterblink.com/wda/</website>
    </comic>
    <comic>
      <name>Dueling Analogs</name>
      <imgaddr>http://www.duelinganalogs.com/comics/{Y}-{m}-{d}.png</imgaddr>
      <website>http://www.duelinganalogs.com/</website>
    </comic>
    <comic>
      <name>America Jr.</name>
      <imgaddr>http://www.americajr.net/comics/full/{y}{m}{d}.jpg</imgaddr>
      <website>hhttp://www.americajr.net/</website>
    </comic>
  </comics>
</xml>
  <select name="comicSelect" onchange="initialise();">
    <option>&nbsp;</option>
  </select>
  <input type="button" value="Previous" onclick="previousComic()" />
  <input type="button" value="Next" onclick="nextComic()" />
  <input type="button" value="Last Comic" onclick="initialise()" />
  <br />
  <img name="comicImage" src="" onload="nif=0;" onerror="noImageFound()" style="display:none" />
</body>
</html>

servi

Legacy Member
for(var I=0; I < comics.length; I++){
var currentComic = comics[i];
var newComicOption = document.createElement("option");
var comicName = document.createTextNode(currentComic.getElementsByTagName("name")[0].firstChild.data);
newComicOption.appendChild(comicName);
document.getElementById("comicSelect").appendChild(newComicOption);
}


I is niet hetzelfde als i

Dat was het eerste wat me opviel, maar er kunnen nog meer fouten in staan.

tha_rippa1be

Legacy Member
servi zei:
for(var I=0; I < comics.length; I++){
var currentComic = comics[i];
var newComicOption = document.createElement("option");
var comicName = document.createTextNode(currentComic.getElementsByTagName("name")[0].firstChild.data);
newComicOption.appendChild(comicName);
document.getElementById("comicSelect").appendChild(newComicOption);
}


I is niet hetzelfde als i

Dat was het eerste wat me opviel, maar er kunnen nog meer fouten in staan.
Ik had het al aangepast op de link die ik gaf naar mn webspace, blijkbaar hier vergeten.

Mja, het werkt nog altijd enkel in opera.
Dit is m'n eerste niet-tutorial scriptje dat ik maak met XML en JS en ik heb het volgens de methode van de tutorials gedaan.
Die dingen werkten altijd perfect in alle browsers, dus vind ik het raar dat dit enkel in opera werkt.

Het zal enkel door mezelf gebruikt worden waarschijnlijk, en ik gebruik opera dus is het geen ramp mocht het niet opgelost raken, tis maar voor te leren hoe het dan wel correct moet.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan