2

条件付きコメントを含むHTMLコードのセグメントがあります。

<!--[if IE]>
<link rel="stylesheet" ...>
<[endif]-->

このコードはテストされており、最初のページレンダリングでページのHEADセクションに含まれていると正しく機能します。

Ajax応答でJavaScriptを使用して、同じ条件付きCSSを既存のページに導入したいと思います。

私が試してみました:

var comment = document.createComment("[if IE]>\n<link rel=\"stylesheet\" ...>\n<[endif]");
Wicket.Head.addElement(comment); //this is framework code that just appends the element to the HEAD node of the page. I debugged and verified that it's doing the appendChild(...) call.

上記のコードによって、スタイルシートがInternet Explorer 7に適用されることはありません。JavaScriptを使用して、Internet Explorerが理解できる方法で条件付きスタイルを導入する方法はありますか?

明確にするために、私はJavaScriptを使用して条件付きスタイルを作成しようとしていますが、ブラウザー条件付きJavaScriptを作成しようとはしていません。

4

4 に答える 4

5

内部で条件付きコメントinnerHTMLを次のように使用できます。

var div = document.createElement("div");
div.innerHTML = "<!--[if IE]><i></i><![endif]-->";
if (div.getElementsByTagName("i").length) {
    var link = document.createElement("link");
    link.rel = "stylesheet";
    link.type = "text/css";
    link.href = "ie_only.css";
    document.getElementsByTagName("head")[0].appendChild(link);
}
于 2011-04-13T19:07:35.147 に答える
1

非常に簡単:

/*@cc_on document.createStyleSheet("ie.css"); @*/
于 2011-04-13T19:15:57.787 に答える
1

Modernizrを知っていますか?

また、これをHTMLのオープンタグで使用するのは素晴らしいことです(no-jsjs!に置き換えてください)

<!--[if lt IE 7 ]><html lang=en-us class="no-js ie6"><![endif]--> 
<!--[if IE 7 ]><html lang=en-us class="no-js ie7"><![endif]--> 
<!--[if IE 8 ]><html lang=en-us class="no-js ie8"><![endif]--> 
<!--[if (gte IE 9)|!(IE)]><!--> <html lang=en-us class=no-js> <!--<![endif]--> 

したがって、CSSでこれを行うことができます。

.ie7 .myDiv {
    foo:bar;
}

次のコマンドを使用してJavaScriptでアクセスすることもできます。

if( document.body.className.indexOf("ie") > -1 ){
     //
}

// or using jQuery

if( $(document.body).hasClass("ie6") ){
}
于 2011-04-13T18:39:32.307 に答える
0

これはすべて不要です。

public void renderHead(IHeaderResponse response)if(WebSession.get()。getClientInfo()。getClientProperties()。isBrowserInternetExplorer()){response.renderJavaScriptReference(new JavaScriptResourceReference(MyClass.class、 "ie.js")); }

Modernizrを使用する場合は、https: //issues.apache.org/jira/browse/WICKET-3433に注意してください。

于 2011-05-24T17:42:57.593 に答える