Firefox不会吗;“正确地”;打开带有目标的链接="_“空白”;JavaScript在页面加载时添加的属性?
我正在使用以下代码(带下划线.js库)向页面加载时的所有非本地链接添加属性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
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
,现在它可以工作了。你有没有可能把它作为一个答案,这样我就可以接受?