wie gern ich dir helfen würde ... aba bei mir funktioniert es....
Also ich weiß nun nicht was hier faul ist, ggf. sieht ja einer was, was ich nicht sehe.
Anhand eines PHP-Scripts wird der Browser, bzw seine Fähigkeiten überprüft und entsprechend ein header ausgegeben, der dann den DOCTYPE usw. definiert.
Nun mal folgender Code, dieser wird im FF generiert:
Wenn ich nun im FF den Link klicke passier nichts.Code:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>TEST</title> <meta name="language" content="de-de" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <style type="text/css">@import "css/style.css";</style> <script type="text/javascript"> <!-- // /*<![CDATA[*/ function test(){ alert('test'); } /*]]>*/ //--> </script> </head> <body id="gaestebuch"> <a href="javascript:test()">testlink</a> </body> </html>
Die JavaScript-Konsole meldet:
Fehler: test is not defined
Quelldatei: javascript:test()
Zeile: 1
Was ist da los
wie gern ich dir helfen würde ... aba bei mir funktioniert es....
Stimmt, für sich getestet ist das richtig.
Aber ...
Der FF kann als mime application/xhtml+xml verarbeiten und das lass ich als Headeranweisung ausgeben und danach will es nicht mehr.
Das PHP Script schaut wie folgt aus.
Lass ich nun den MIME ungeachtet der Browser Fähigkeiten auf text/html geht es, aber ich weiß noch, dass mit MIME=text/html und uft-8 irgend welche Probleme in dem Projekt vorhanden waren.PHP-Code:<?
session_start();
$charset = "UTF-8";
$mime = "text/html";
function fix_code($buffer) {
return (preg_replace("!\s*/>!", ">", $buffer));
}
if(stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {
if(preg_match("/application\/xhtml\+xml;q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {
$xhtml_q = $matches[1];
if(preg_match("/text\/html;q=q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {
$html_q = $matches[1];
if((float)$xhtml_q >= (float)$html_q) {
$mime = "application/xhtml+xml";
}
}
} else {
$mime = "application/xhtml+xml";
}
}
if($mime == "application/xhtml+xml") {
$prolog_type = "<?xml version=\"1.0\" encoding=\"$charset\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"de\" lang=\"de\">\n";
} else {
ob_start("fix_code");
$prolog_type = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html lang=\"de\">\n";
}
header("Content-Type: $mime;charset=$charset");
header('Vary: Accept, User-Agent');
header('Cache-Control: private');
print $prolog_type;
?>
Sonst einer einen Hinweis, wie ich JavaScript auch mit MIME=application/xhtml+xml ansprechen kann.
Geändert von webcreate (15.06.2006 um 21:00 Uhr)
Hallo webcreate, probier's mal hiermit
Die klassischen Kommentarbegrenzer sind so ne Sache bei XML, alles zwischen <!-- ... --> wird ignoriert. So richtig erklären kann ich's dir jetzt nicht, aber eine Suchmaschine Deiner Wahl wird Dir mehr zum Thema "comments javascript application xhtml" o.ä. sagen. Allgemein is es sicher einfacher und sauberer, Scripte auszulagern, dann brauchst Du Dich um sowas nicht zu kümmern.Code:<script type="text/javascript"> <![CDATA[ function test() { alert('test'); } ]]> </script>
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Man man, da sag nochmals nen Mann; Frauen und Technik.
Die Kommentierung hatte ich auch schon raus, aber da hatte ich den CDATA Tag noch nicht drin, was gleich nen XML Fehler gab.
Das ist nun nicht so und es funzt im FF.
Da der IE aber nun kein application/xhtml+xml rafft, und der ja text/html bekommt, gibt es dort nen JavaScript Fehler.
Aber die Lösung ist: Nicht alles, aber ein wenig Kommentieren
Ich danke dir für den Lattenzaun, dass war es, was ich jetzt brauchte.Code:<script type="text/javascript"> //<![CDATA[ HIER DANN DAS SCRIPT //<]]> </script>
FF bekommt application/xhtml+xml und der IE text/html. Man kann das Leben schön sein
Für alle folgenden, die das selbe, oder ein ähnliches Problem haben, hier mal ein Link.
Geändert von webcreate (15.06.2006 um 23:37 Uhr)
Freut mich, wenn ich Dich zumindest auf den richtigen Trichter bringen konnteWie schön wäre das Leben erst, wenn der IE auch XHTML könnte, hachja ...
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Skripts und Stylesheets mit <!-- auszukommentieren ist heutzutage recht überflüssig. Das war damals erforderlich, als es noch Browser gab, die nicht nur kein JavaScript konnten, sondern auch noch den <script>-Tag nicht kannten. So wurde der JavaScript-Quelltext angezeigt.
Heutzutage wissen die JavaScript-unfähigen Browser, dass sie alles zwischen <script> und </script> ignorieren sollen.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)