标签“javascript:”是否有任何问题?

当JSLint和JSHint遇到标识符与下列正则表达式匹配时,会发出警告:

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

例如,以下代码片段从JSLint生成一个“JavaScript URL”警告,并且JSHint中的“Label’javascript’看起来像一个javascript url”警告(函数包装器是不必要的,但是JSLint不喜欢标记为不是函数的语句标注并提出不同的警告):

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

就我所知,没有浏览器关心它,即使它在书签中的“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:”(或与该正则表达式匹配的任何其他字符串)是否会引起任何问题(一些古老的浏览器可能?),这将保证产生警告?为什么会产生这些警告?

我大部分在这里猜测,但是考虑一下:

> javascript:不是一个实际的协议;
>除书签之外的任何地方都不需要(否则它被认为是一个标签);
>警告说它“看起来像一个javascript网址”.

我认为JSLint建议javascript:伪协议是坏的,所以类似的东西,或者可能与它混淆.是否会引起任何问题?严格来说,perhaps on IE(也许只有oldIE).但是,正如我所说,一个javascript:标签可能与伪协议混淆,JSLint不喜欢任何可能混淆的东西.所以这可能是一个解释.

相关文章
相关标签/搜索