2012-04-04 6 views
1

内容を読むことについていくつかのスレッドが見られましたが、には何も書かれていません。をnoscriptに書きます。 ChromeとIE9ではコンテンツを持つ<noscript>要素を作成するとIE7とIE8(jQuery)で失敗する

$('body').append('<noscript><div></div></noscript>'); 

私は期待のように内部の空のdivでのnoscript要素を得るが、IE7とIE8で、私はすぐ内側のdivせずに空のnoscript要素を取得します。

例:http://jsfiddle.net/cEMNS/

すべてのブラウザで動作するのnoscriptタグ内のHTMLを追加する方法はありますか?私が必要とするのは、ページの終わりにnoscript要素にトラッキングコードを追加することですが、必要な情報はドキュメントが完成するまで利用できません。

編集:私は「なぜ」について多くのコメントを得ています。これは、これを必要とする、不十分な追跡ライブラリです。私たちはそれを変更するコードにアクセスすることはできません。それにもかかわらず、jQueryはすべてのブラウザで同じように動作するはずだったので、一部のブラウザでは動作し、他のブラウザでは動作しないというのは面白いです。それは単にバグですか?

Edit2:(2年後)ブラウザにnoscriptを追加することは意味をなさないと私は知っています。私の唯一の言い訳は、私が持っていた課題は、プロジェクトの他の人のように、睡眠不足のためでした。しかし、私の理論的根拠は、jQueryはすべてのブラウザで同じように動作し、誰かがサーバ上でこれを行うことが望ましいということでした。

+6

ちょうど興味があります... javascriptを介して 'noscript'タグを追加する実用的な理由はありますか? o_O –

+0

私は皆様の個人的なご意見をお待ちしていますが、後で利用できる情報が含まれている必要があるトラッキングコードは書きませんでした。それにもかかわらず、私はこれがChromeとIE9で動作する理由は見当たりませんが、IE7とIE8では動作しません。 –

+0

@ John-Philip javascript(またはIEの場合、スクリプト言語の実行)が許可されていない場合、noscriptタグが呼び出されます。 HTMLのみを含めることができます。私の目では、Javascriptを付けるのは意味がありません。 – reporter

答えて

6

トラッキングコードに関係なく、あなたがやっていること(または実行する必要がある)は意味をなさない!

なぜですか? 2例はここに可能があります。

  • ユーザーはNOSCRIPTのは、DOMに挿入されますが、ブラウザによって無視された場合にはJavaScriptが有効になっては(何もしない)がある
  • ユーザーは、JavaScriptが有効になっていません、NOSCRIPTはしていません挿入されて実行されません。

両方のケースの最終結果は実際には何も起こらないということです。

+0

しかし**何かが**起こっている、それはJavascriptに関係なく有効です(それは、私は1つのテストです)。 noscript要素が挿入されていますが、IE7とIE8ではnoscript要素は空ですが、IE9とChromeではnoscript要素に空のdiv要素が含まれています。 –

+0

私は、あなたがやっていることは何も達成できず、あなたはそれを他の方法で解決しなければならないと指摘しています。 –

+0

トラッキングコードが正常に動作していませんでした。問題は、ホスト名を正しく認識していないということだったので、それを追加しました。ロード時にnoscript要素を使用しても、ロード後に同じ要素を追加することは意味しません。 –

1

ちょっとしたアイデア:noscriptタグにIDを与えてから、ネイティブjsを使ってみてください。例えば :

$('body').append('<noscript id="myTestNoScript"></noscript>'); 
document.getElementById('myTestNoScript').innerHTML = '<div></div>'; 

が、私はそれがネイティブJSで動作しない場合、それは(これで私を修正して自由に感じる)任意のライブラリでは動作しませんと主張するだろう。

0

私は、単純なHTMLコード以下試してみました:

<html> 
    <body> 
     <noscript>I'm a noscript tag.</noscript> 
    </body> 
</html> 

その後、私はIE8(IE7モードで)と彼の統合されたコードinsprectorでこれを分析しました。どうやら、IE7のチェックはスクリプトが許されているようです。もしそうなら、彼はそれを空と宣言した。空のタグは無視されます。システム管理者だけが設定を変更できるので(私の仕事では)、不幸にも、無効スクリプトオプションを使ってそれを試すことができませんでした。 私があなたに保証するものは、noscriptは存在します。追加すると、作成後に

alert($('noscript').size()); 

が追加され、結果は1になります。

+0

はい、noscript要素が作成されましたが、空です。また、テキストだけでなくHTMLを追加しようとしています。 –

+0

私もそれをして、同じ結果があった。私は、すべてのブラウザがこのタグを独自の方法で処理していると思います(ただし、実装した開発者です)。 – reporter

関連する問題