1

I've seen several threads about reading contents, but nothing on writing to noscript.

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

In Chrome and IE9 I get a noscript-element with a empty div inside like I expect, but in IE7 and IE8 I just get a empty noscript-element without the div inside.

Example: http://jsfiddle.net/cEMNS/

Is there a way to add HTML inside the noscript-tag that works in all browsers? What I need is to add some tracking code into a noscript-element at the end of the page, but the info I need isn't available until after document ready.

Edit: I'm getting a lot of comments on "why". It's some poorly done tracking library that requires this. We don't have access to the code to change it. Regardless, I find it interesting that it works in some browsers and not in others since jQuery was supposed to work equally in all browsers. Is it simply a bug?

Edit2: (2 years later) Adding a noscript on the browser doesn't make sense, I know. My only excuse not the question the task I had was because of lack of sleep, like everyone else in the project. But my rationale was that jQuery should behave the same on all browsers and someone might want to do this on the server.

4

3 に答える 3

7

トラッキング コードに関係なく、何を行っているか (または行う必要があるか) は意味がありません。

なんで?ここでは、次の 2 つのケースが考えられます。

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

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

于 2012-04-04T13:09:08.140 に答える
1

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

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

ネイティブjsで動作しない場合は、どのライブラリでも動作しないと私は主張します(これについては遠慮なく修正してください)。

于 2012-04-04T13:15:36.810 に答える
0

次の簡単なHTMLコードを試しました:

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

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

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

作成後、結果は 1 になります。

于 2012-04-04T13:33:48.487 に答える