java SCRIPT + google CHROME browser

Status
Niet open voor verdere reacties.

IJZERHOOFD

Nieuwe gebruiker
Lid geworden
5 jan 2013
Berichten
1
hoi als ik onderstaand script in een web pagina plaats doet mijn script het niet in chrome maar wel weer in IE in chrome verandert het nieuws niet automatisch na de ingestelde tijd.
ben met chrome naar de site van leejoo.ml gegaan om daar andere scripts te testen. sommige doet het wel andere niet.

kan iemand even meekijken naar het script waarom dat hij niet doet wat hij moet doen in chrome.

alvast bedabkt voor het meedenken

<SCRIPT LANGUAGE="JavaScript">
<!--//
var browserName = navigator.appName;
var browserVer = parseFloat(navigator.appVersion);
var browserMac = navigator.appVersion.indexOf("Macintosh");
var browserWin = navigator.appVersion.indexOf("Win");
var version = "ack";

if (browserName == "Netscape"
&& browserVer >= 3) version = "n3";
if (browserName == "Netscape"
&& browserVer >= 4) version = "n4";
if (browserName == "Microsoft Internet Explorer"
&& browserVer >= 3.01
&& browserMac != -1) version = "ie3m";
if (browserName == "Microsoft Internet Explorer"
&& browserVer >= 4) version = "ie4";
var libOk = (version == "n4"
|| version == "ie4") ? true : false;
var rollOk = (version == "n3"
|| version == "n4"
|| version == "ie3m"
|| version == "ie4") ? true : false;
var ImgButtonOk = (version == "ie4") ? true : false;

var currentNews = 0;
var numNews = 0;
var newsArr = new Array();
var dateArr = new Array();
// verander hieronder de nieuwsflitsen
addToNews("Nieuwsflits 1 <BR> Lorem ipsum dolor sit amet consectetuer adipiscing elit Aenean turpis In sem. Praesent facilisis est in urna Cras eu elit. Donec dapibus nulla id velit Proin fermentum aliquam eros Ut pharetra metus vel nibh Etiam ornare risus consequat vulputate ullamcorpe sapien augue blandit enim vitae euismod libero nibh non sem Praesent placerat. Integer interdum elementum elit. In in felis Donec mollis arcu quis est","04-10-2005");
addToNews("Nieuwsflits 2 <BR> Integer eu neque eu quam tempor aliquet Fusce congue Suspendisse in lacus sit amet elit molestie egestas Nulla facilisi Class aptent taciti sociosqu ad litora torquent per conubia nostra per inceptos hymenaeos Donec pretium aliquet metus Fusce varius mi id dolor Proin vitae est. Sed erat sem venenatis porta consectetuer nec volutpat porta mi Donec sed elit Pellentesque quis neque eu augue suscipit dapibus","28-09-2005");
addToNews("Nieuwsflits 3 <BR> Lorem ipsum dolor sit amet consectetuer adipiscing elit Aenean turpis In sem. Praesent facilisis est in urna Cras eu elit. Donec dapibus nulla id velit Proin fermentum aliquam eros Ut pharetra metus vel nibh Etiam ornare risus consequat vulputate ullamcorpe sapien augue blandit enim vitae euismod libero nibh non sem Praesent placerat. Integer interdum elementum elit. In in felis Donec mollis arcu quis est","07-09-2005");
addToNews("Nieuwsflits 4 <BR> Integer eu neque eu quam tempor aliquet Fusce congue Suspendisse in lacus sit amet elit molestie egestas Nulla facilisi Class aptent taciti sociosqu ad litora torquent per conubia nostra per inceptos hymenaeos Donec pretium aliquet metus Fusce varius mi id dolor Proin vitae est. Sed erat sem venenatis porta consectetuer nec volutpat porta mi Donec sed elit Pellentesque quis neque eu augue suscipit dapibus","30-08-2005");

function addToNews(news,datum)
{
newsArr[numNews] = news;
if(datum!=null) dateArr[numNews] = datum;
else dateArr[numNews] = "";
numNews++;
}
function updateNews()
{
if(version == "ie4" && navigator.appVersion.indexOf("4.01")==-1){
document.all["news"].innerHTML = "<font size=2px>["+dateArr[currentNews]+"]:</font>*"+newsArr[currentNews];
currentNews++;
if(currentNews == newsArr.length)currentNews = 0;
setTimeout("updateNews()",7000); // verander hier de tijd ( in milliseconden )
}
else{
var num = Math.floor((newsArr.length-1)*Math.random()+0.5);
document.write(newsArr[num]);
}
}
//-->
</SCRIPT>
 
Hoi IJzerhoofd,
... waarom het script niet doet wat het moet doen in chrome.
Tja, het Chrome doet eigenlijk precies wat het script zegt ... want het script klopt niet! :shocked:

Het script zou moeten beginnen met Nieuwsflits 1, en dan om de 7 seconden de volgende Nieuwsflits moeten laten zien.
Maar dit script wekt alleen maar in Internet Explorer. :confused:


  • En behalve niet in Chrome werkt het script ook niet in Firefox, Opera, Safari e.a. browsers.

Wat is er aan de hand?
  • Het is een puur verouderd script, dat dateert uit de tijd van de browseroorlog tussen Internet Explorer en Netscape: de jaren rond 2000. *)
  • Het begint meteen al goed (fout): met "browser-sniffing" (browser-snuffelen), dwz. met javascript nagaan welke browser het is, en dan aan verschillende browsers verschillende scripts "op maat" toedienen. Dat is een volstrekt onbetrouwbare methode (want kan bv. geen rekening houden met browsers de op er een bepaald moment nog niet zijn, hoe die heten, enz.; zie bv. hier: 5 Reasons Why Browser Sniffing Stinks).
  • Als je in het script kijkt, zie je dat het gaat om bv. een onderscheid tussen Netscape 3, Netscape 4 en Internet Explorer 3.01 en Internet Explorer 4. Kan je nagaan! Netscape 9 was de laatste browser van Netscape, en die is er al sinds begin 2008 mee gestopt. Internet Explorer 8 is intussen de laagste IE-versie die nog gebruikt wordt (IE7 en eerder komen niet meer in de statistieken voor).
  • De methode die voor het om de 7 sec. updaten gebruikt wordt, is "IE-only": werkt alleen in Internet Explorer.
  • Alle andere browsers krijgen een ander script voorgeschoteld, dat niet om de 7 sec. ververst maar er een met een toevals-machientje een willekeurige Nieuwsflits uit pakt en die op de pagina zet (ververs je de pagina, dan kan er een andere Nieuwsflits komen, maar dat is niet altijd het geval; ze zitten ook niet op volgorde).

Samengevat: aan dit script heb je niets!

=======
Wat dan wel?
Hoe het wel kan:
  1. De Nieuwsflitsen op de pagina zetten in <div>'s die elk een eigen ID hebben.
  2. Met behulp van CSS deze <div>'s onzichtbaar maken.
  3. Vervolgens met javascript de ID's van de Nieuwsflitsen om de beurt vastpakken, en om de 7 sec. een andere zichtbaar laten maken (en de vorige weer verstoppen): met CSS die door javascript wordt opgeroepen.
  4. Zijn ze allemaal geweest, dan begint het script weer met de eerste. Enz.

Illustratie:
  • twitter-carrousel
  • Met het daar gebruikte javascript worden twitter-berichten om de beurt getoond, in plaats van onder elkaar te komen.
  • Dit werkt prima in alle browsers.

Met vriendelijke groet,
CSShunter
________
*) Altijd leuk om even te kijken wanneer leejoo.nl een script voor het eerst geplaatst heeft. Uit het Internet-archief komt: 1 nov. 2005, dus ruim 7 jaar geleden (zie hier). Sindsdien is het script bij leejoo niet veranderd!

Overigens, als je de leejoo-pagina door de html-validator laat nakijken, komen er 23 html-fouten en 7 waarschuwingen uit: ook niet om een voorbeeld aan te nemen...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan