Firefox不会吗;“正确地”;打开带有目标的链接="_“空白”;JavaScript在页面加载时添加的属性?

Firefox不会吗;“正确地”;打开带有目标的链接="_“空白”;JavaScript在页面加载时添加的属性?,javascript,firefox,Javascript,Firefox,我正在使用以下代码(带下划线.js库)向页面加载时的所有非本地链接添加属性target=“\u blank”和rel=“external”。我的代码如下所示: (function($){ $(document).ready(function(){ // Create a matching regex pattern based on current host name var regexPattern = new RegExp(location.orig

我正在使用以下代码(带下划线.js库)向页面加载时的所有非本地链接添加属性
target=“\u blank”
rel=“external”
。我的代码如下所示:

(function($){
    $(document).ready(function(){

        // Create a matching regex pattern based on current host name
        var regexPattern = new RegExp(location.origin);

        // Gather all non-local links
        nonLocalLinks = _(jQuery('a')).reject(function(link) { 

            return link.href.match(regexPattern);

        });

        // Add attributes to all non-local links
        _(nonLocalLinks).each(function(item) { 
            item.target = '_blank'; 
            item.rel = 'external';
        });

    })
})(jQuery)
这段代码在所有经过测试的浏览器(Chrome17、IE7、IE8、IE9、Safari)中都能正常工作,但在Firefox10中不起作用。链接在锚定标记上设置了
target=“\u blank”
属性,作为服务器功能的HTML输出的一部分。这在Firefox中的页面加载上不起作用,或者我还缺少其他东西吗

此外-我感谢任何和所有的输入,但请不要建议这是糟糕的用户体验等。我同意,但我没有选择-这是为客户,这是他们想要的;“不”不是一个选项


编辑:此“不工作”表示链接在同一选项卡中打开。firebug控制台中没有错误-该链接的行为就像未设置
target=“\u blank”
一样。

Firefox在
窗口上没有
origin
属性。location
。这意味着您的
regexpatern
最终将成为
/
,而
非本地链接将保持为空

演示(观看控制台):

您必须解释丢失的
位置。origin
如下所示:

var origin = location.origin;
if(!origin)
    origin = location.protocol + '//' + location.host;
演示:

您可能还想在正则表达式中添加一个
^
锚,或者检查是否为零

如果查看,您将看到支持以下属性:

  • 散列
  • 主人
  • 主机名
  • href
  • 路径名
  • 港口
  • 协议
  • 搜寻

没有源代码。

Firefox在
窗口的位置上没有
源代码属性。这意味着您的
regexpatern
最终将成为
/
,而
非本地链接将保持为空

演示(观看控制台):

您必须解释丢失的
位置。origin
如下所示:

var origin = location.origin;
if(!origin)
    origin = location.protocol + '//' + location.host;
演示:

您可能还想在正则表达式中添加一个
^
锚,或者检查是否为零

如果查看,您将看到支持以下属性:

  • 散列
  • 主人
  • 主机名
  • href
  • 路径名
  • 港口
  • 协议
  • 搜寻

没有原点。

为什么要直接设置“目标”,而用jQuery“attr”函数设置“rel”?如果出于某种原因必须在那里使用jQuery,那么应该使用“.prop()”而不是“.attr()”,几乎可以肯定。当你说它不起作用时,到底是什么问题?你怎么知道它不起作用呢?那是旧代码的痕迹——谢谢你指出了这一点。修正了问题和实际来源。为这个问题添加了额外的细节。另外,如果你能发布这个正则表达式也会很有帮助,因为这可能就是问题所在。是一个简单的JSFIDLE,它演示了通过JavaScript向
链接添加“target”在Firefox中非常有效。@Pointy-你对正则表达式的评论让我想到了这个问题。location对象在Firefox中没有
origin
属性。我将它更新为
location.origin | | location.host
,现在它可以工作了。你有没有可能把它作为一个答案,这样我就可以接受它?为什么你直接设置“target”,而用jQuery“attr”函数>“rel”呢?如果出于某种原因必须在那里使用jQuery,那么应该使用“.prop()”而不是“.attr()”,几乎可以肯定。当你说它不起作用时,到底是什么问题?你怎么知道它不起作用呢?那是旧代码的痕迹——谢谢你指出了这一点。修正了问题和实际来源。为这个问题添加了额外的细节。另外,如果你能发布这个正则表达式也会很有帮助,因为这可能就是问题所在。是一个简单的JSFIDLE,它演示了通过JavaScript向
链接添加“target”在Firefox中非常有效。@Pointy-你对正则表达式的评论让我想到了这个问题。location对象在Firefox中没有
origin
属性。我将它更新为
location.origin | | location.host
,现在它可以工作了。你有没有可能把它作为一个答案,这样我就可以接受?