Problem mit Opera bei Heise News (RDF)
kalle
- php
Hallo zusammen,
Ich bekomme mit dem Opera immer eine Fehlermeldung, wenn ich mit der Maus über das Script fahre, kann mir jemand weiter Helfen?
Fehlerbeschreibung:
Event thread: mouseover
Error:
name: TypeError
message: Statement on line 1: Type mismatch (usually a non-object value used where an object is required)
Backtrace:
Line 1 of script
document.all.newsbox.stop();
At unknown location
[statement source code not available]
code begin#
<?php
$cache_file = "/srv/www/htdocs/webnummer/html/shortnews/heise.cache";
$cache_time = 3600;
$max_items = 30;
$backend = "http://www.heise.de/newsticker/heise.rdf";
$items = 0;
$time = split(" ", microtime());
srand((double)microtime()*1000000);
$cache_time_rnd = 300 - rand(0, 600);
if ( (!(file_exists($cache_file))) || ((filectime($cache_file) + $cache_time - $time[1]) + $cache_time_rnd < 0) || (!(filesize($cache_file))) ) {
$fpread = fopen($backend, 'r');
if(!$fpread) {
} else {
$fpwrite = fopen($cache_file, 'w');
if(!$fpwrite) {
} else {
while(! feof($fpread) ) {
$buffer = ltrim(Chop(fgets($fpread, 256)));
if (($buffer == "<item>") && ($items < $max_items)) {
$title = ltrim(Chop(fgets($fpread, 256)));
$link = ltrim(Chop(fgets($fpread, 256)));
$title = ereg_replace( "<title>", "", $title );
$title = ereg_replace( "</title>", "", $title );
$link = ereg_replace( "<link>", "", $link );
$link = ereg_replace( "</link>", "", $link );
$title = ereg_replace( "ä", "ä", $title );
$title = ereg_replace( "ü", "ü", $title );
$title = ereg_replace( "ö", "ö", $title );
$title = ereg_replace( "ß", "ß", $title );
$title = ereg_replace( "Ä", "Ä", $title );
$title = ereg_replace( "Ö", "Ö", $title );
$title = ereg_replace( "Ãœ", "Ü", $title );
fputs($fpwrite, "<img src='themes/images/bullet.gif'> <a href='$link' target='_blank' onMouseOver='document.all.newsbox.stop();' onMouseOut='document.all.newsbox.start();'>$title</A><br><br>\n");
$items++;
}
}
}
fclose($fpread);
}
fclose($fpwrite);
}
echo"<marquee id='newsbox' width='99%' height='120' behavior='scroll' align='left' direction='up' scrolldelay='50' scrollamount='1'>";
if (file_exists($cache_file)) {
include($cache_file);
}
echo"</marquee>";
?>
code end#
Hallo,
Offenbar handelt es sich hier um ein JavaScript-Problem, der PHP-Code ist daher unwichtig, höchstens der HTML-Code, den er erzeugt.
Ein marquee-Elementobjekt hat im Opera keine Methoden namens start() und stop(). Das sind Microsoft-Erfindungen.
So kommst du also nicht weiter, da müsstest du dich nach einem anderen Newsticker umsehen.
Mathias