2013-04-12 19 views
12

両方JSLintとJSHint問題の警告、彼らはその識別子次の正規表現にマッチラベル付きステートメント遭遇したとき、たとえばラベル「javascript:」で問題が発生する可能性はありますか?

/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i 

を、次のスニペットは、JSLintから「JavaScriptのURL」警告および「ラベルのJavaScriptを生成し、限り私ができるよう

function example(x, y) { 
javascript: 
    while (x) { 
     while (y) { 
      break javascript; 
     } 
    } 
} 

:「JSHintからjavascriptのURL」警告(関数ラッパーは不要ですが、JSLintはスコープの機能と異なる警告を提起されていないラベル付きの文が好きではありません)のように見えますたとえそれがまっすぐに見えても、ブラウザは気にしないブックマークレットの "javascript:"プロトコルの後ろにたとえば、次は必ず(ただのブックマークレットなどのアドレスバーに貼り付ける)動作するようです:

javascript:(function() { javascript:for(var i = 0; i < 2; i++) { alert(i); break javascript; } }()); 

javascript:javascript:for(var i = 0; i < 2; i++) { alert(i); break javascript; } 

ラベル識別子「のjavascript:」でした(またはその正規表現にマッチする他の文字列)がこれまでに発生しています警告が生成されることを保証する問題(おそらく古代のブラウザでしょうか?)これらの警告はなぜ生成されますか?

+9

Pumbaa80 @ 1 – user123444555621

+0

を "IE6は...いくつかの副作用を作り出す" - 母、私は「HADNそれを読んでください!ありがとう。 –

答えて

4

私はほとんどここに推測するが、それを考慮しています:

  • javascript:は、実際のプロトコルではありません。
  • ブックマークレット以外はどこにも必要ありません(それ以外の場合はラベルと見なされます)。
  • 警告に「のjavascriptのURLのようです」と表示されます。

私はJSLintが疑似プロトコルが悪いことを示唆していると思います。それと似ている、またはそれと混同している可能性があります。それは何か問題を引き起こすことができますか?厳密には、perhaps on IE(おそらくoldIEのみ)。しかし、私が言ったように、javascript:ラベルはと混同されている可能性があります。は擬似プロトコルで混乱している可能性があります。だから、これは説明かもしれない。

+0

これはおそらく正しいと思います。私はあらゆる種類の実験を行い、何の問題も起こさなかったので、実際には問題にならないJSLintの奇妙なものの1つとして言います。ありがとう。 –

+1

これはJSLintにコード化されていないようですが、すぐに文字列 "the good parts"が続くと、 'javascript:'も受け入れられます。 :) – bfavaretto

1

bfavarettoが言っていることはおそらく真であり、特に最後の箇条書きですが、javascript:という擬似プロトコルは推奨されていません。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void#JavaScript_URIs

「ただし、javascript:擬似プロトコルは、このような控えめなイベントハンドラのような他の代替、上推奨されていること」:

MDNこの言及します

理由の記事:http://into-the-zen.blogspot.com/2010/04/dont-use-javascript-pseudo-protocol.html

が...ああ、皮肉、 `javascript`を破る

+0

私は完全に同意します。擬似プロトコルの使用を奨励しているように私の答えは聞こえますか? – bfavaretto

+0

@bfavaretto:いいえ、それは良い答えだった、私はちょうどこれも言及する必要があると思った。 –

+0

わかりました、ありがとうございます! – bfavaretto

関連する問題