2011-01-04 14 views
0

Ich sehe nicht, warum das nicht funktioniert. Ich nehme an, dass eine if-Anweisung aus einem wirklich lahmen Grund möglicherweise nicht in der Lage ist, eine Textzeichenfolge zu validieren, aber das würde mich sehr verärgern, wer diese Skriptsprachen schreibt.mit JQuery.browser CSS basierend auf Layout-Engine wählen

//I don't want to know the browser. I want to know the layout engine the user is using. 
if($.layout.name == "webkit"){$("#debug").html("your browser uses webkit");} 

//I eventually want to do this 
if($.layout.name == "webkit"){ 
    document.write('<link rel="stylesheet" href="/css/webkit-name-v006.css" type="text/css" media="screen">'); 
} 

Ich sah überall für die Dokumentation, wie das jquery.browser Plugin verwenden, aber sie nur Informationen geben für die spezifischen Browser-Namen Erkennen sie Beispiele nicht für die Überprüfung für Layout-Engine geben.

Ich muss ein Skript schreiben, das die CSS-Datei basierend auf Browser-Layout, nicht Version wählt.

Ich will keinen Hype über Feature-Erkennung hören. Ich war dort und habe gesehen, dass es ein Fehler ist. Ich will nur, dass es funktioniert.

Danke.

+2

Es ist weit von "Hype." – Stephen

+0

$ .browser.safari ist ab jQuery 1.4 veraltet. –

+0

Nein. Es ist gut für die Arbeit, zwischen verschiedenen Benutzeragenten zu unterscheiden, sobald Sie ausgehandelt haben, welche Layout-Engine sie verwenden, aber anders als dass wir es nie sehen werden, weil es viele schwerwiegende Fehler hat. In der Theorie ist es eigentlich eine gute Idee. –

Antwort

0

// die Antwort gefunden ich den Code in einer if-Anweisung String setzen und muss sagen, "else if"

Hier ist der Arbeitscode ist

//WEBKIT SAFARI CHROME  CSS 
if($.layout.name == 'webkit'){$("#debug").html("your browser uses webkit");} 
//GECKO  FIREFOX MOZILLA CSS 
else if($.layout.name == 'gecko'){$("#debug").html("your browser uses gecko");} 
//TRIDENT IE    CSS 
else if($.layout.name == "trident"){$("#debug").html("your browser uses trident");} 
//PRESTO OPERAH   CSS 
else if($.layout.name == "presto"){$("#debug").html("your browser uses presto");} 
//KNOW ONE KNOWS 
else{$("#debug").html("your browser is unrecognized");} 
//IOS  IPHONE   CSS 
//ANDROID GALAXY   CSS 
+0

Nur ein FYI, Trident (MSIE) Versionen variieren stark von Version zu Version. Sie können wahrscheinlich kein einziges CSS-Layout schreiben, das für alle Versionen der Trident-Engine geeignet ist. – Klinky

+0

Dafür plane ich die Feature-Erkennung  –

1

Try this:

$(document).ready(function() 
{ 
    if($.browser.webkit){ 
     $("head").append(
      $("<link />").attr({ 
       rel: "stylesheet", 
       type: "text/css", 
       href: "file.css" 
      }) 
     ); 
    } 
}); 
+0

Warum würden Sie etwas anhängen und dann umdrehen und es erneut auswählen? Sie sollten die Attribute zuerst anwenden und dann anhängen. – Stephen

+0

Sie könnten auch '$ .layout.name == 'webkit'' verwenden. –

+2

Natürlich ging es mir vor allem darum, 'document.write' zu ​​vermeiden. –

Verwandte Themen