2011-01-04 11 views
0

これはなぜ動作しないのかわかりません。本当に不幸な理由のためにif文が文字列を検証することができないかもしれないと思うが、それは誰がこれらのスクリプト言語を書いているのか非常に怒ってしまうだろう。JQuery.browserを使用してレイアウトエンジンに基づいてCSSを選択する

//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">'); 
} 

私はjquery.browserプラグインを使用する方法に関する資料についてはすべての上に見えたが、彼らは彼らだけがレイアウトエンジンのためにチェックするための例を与えていない特定のブラウザ名を検出するための情報を与えます。

//this is the closest working example I found online 
$.browser.safari = /safari/.test(navigator.userAgent.toLowerCase()); if ($.browser.safari) { 
document.write('<link rel="stylesheet" href="http://domain.tld/css/safari.css" type="text/css" media="screen">'); } 

バージョンではなくブラウザのレイアウトに基づいてCSSファイルを選択するスクリプトを作成する必要があります。

私は機能の検出に関する誇大宣伝を聞きたくありません。私はそこにいて、それが間違っているのを見ました。 この作業をしたいだけです。

ありがとうございました。

+2

「誇大宣伝」から遠いです。 – Stephen

+0

$ .browser.safariはjQuery 1.4以降で非推奨です。 –

+0

彼らが使用しているレイアウトエンジンをネゴシエーションしたら、異なるユーザーエージェントを区別して作業するのに適していますが、重大な欠陥が多数存在するため、決してそれを捕まえることはできません。理論的には、実際には良い考えです。 –

答えて

0

//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

FYIのTrident(msie)バージョンはバージョンによって大きく異なります。おそらく、Tridentエンジンのすべてのバージョンで動作する単一のCSSレイアウトを記述することはできません。 – Klinky

+0

そのために、私は機能検出を使用する予定です –

1

これを試してみてください:ここで

は、作業コード

で "あれば他に" ANSWER 私はif文の文字列内のコードを入れていたし、GOTのために言うことを// FOUND
$(document).ready(function() 
{ 
    if($.browser.webkit){ 
     $("head").append(
      $("<link />").attr({ 
       rel: "stylesheet", 
       type: "text/css", 
       href: "file.css" 
      }) 
     ); 
    } 
}); 
+0

何かを追加してから、それを回してもう一度選択するのはなぜですか?最初に属性を適用し、次に追加する必要があります。 – Stephen

+0

'$ .layout.name == 'webkit''を使うこともできます。 –

+2

もちろん、私の主張は主に 'document.write'の使用を避けることでした。 –

関連する問題