如何修改此Javascript以在不同的窗口中打开链接
How to modify this Javascript to open links in a different window?
我在这里找到的这个Javascript向字符串对象添加了一个方法parseURL(),这样,如果里面有任何链接,它就会用标签包围它们,这样它们就可以点击了。
String.prototype.parseURL = function() {
return this.replace(/[A-Za-z]+:'/'/[A-Za-z0-9-_]+'.[A-Za-z0-9-_:%&~'?'/.=]+/g, function(url) {
return url.link(url);
});
};
首先,这是怎么回事?我对regex表达式略知一二,可以制作简单的表达式,但我在这里甚至看不到"href"这个词!
如何修改它,以便在另一个窗口中打开链接?即如何在此处添加target="_blank"
属性?
首先,这是怎么回事?
显然,在代码的其他地方,你会发现:
String.prototype.link = function(url) { /* ... */ };
其将以返回字符串结束。replace
所做的是调用传递给它的匿名函数,并将与正则表达式匹配的字符串作为参数;replace
期望该函数返回适当的替换,然后将其插入字符串中。(第二种形式的replace
接受函数而不是字符串作为第二个参数,它非常有用,但并不像您预期的那样广为人知。)匿名函数对参数(url
)调用link
函数,这是一个字符串,并返回结果。因此,我相信您会在代码中的某个位置发现一个link
函数被添加到String.prototype
中
至少有些浏览器向String
实例添加了一堆非标准方法,这些方法将字符串包装在标签中;link
就是其中之一。它只是使用给定的URL返回a
元素的标记。
如何修改它,以便在另一个窗口中打开链接?
实际上,第一个问题的答案回答了第二个问题:假设您会在link
函数中找到标记;你可以在那里更新它
只需将非标准link
函数的使用替换为您自己的字符串串联:
return '<a href="' + url + '">' + url + '</a>';
通常我会说,您应该确保对HTML实体进行编码,但由于已经在处理HTML源字符串,因此它们应该已经被正确编码。
'href'来自url.link(url);
行
String.prototype.link是一个愚蠢的函数,包含它是为了向后兼容像这样愚蠢的代码。这很傻,你应该停止使用它。
如果你想看看它在做什么,只需alert('something'.link('anotherthing'));
这就像String.prototype.blink。愚蠢。
根据:http://www.w3schools.com/jsref/jsref_link.aspString()方法返回一个文本"blah"作为HTML链接
<a href='blah'>blah</a>".
所以我猜你有两个解决方案:
1/覆盖link()定义(不推荐),声明如下:
String.prototype.link = function(url) {
return "<a target='_blank' href='"+url+"'>"+url+"</a>";
}
2/定义另一个函数,并在parseURL()的定义中使用它而不是link():
String.prototype.blankLink = function(url) {
return "<a target='_blank' href='"+url+"'>"+url+"</a>";
}
然后你的代码应该变成:
String.prototype.parseURL = function() {
return this.replace(/[A-Za-z]+:'/'/[A-Za-z0-9-_]+'.[A-Za-z0-9-_:%&~'?'/.=]+/g, function(url) {
return url.blankLink(url);
});
};
为了解释一点,replace()返回输入字符串,其中与正则表达式匹配的部分(在本例中表示任何URL的形状)被第二个参数(返回URL.link()的未命名函数)替换。JS引用没有说的是,如果你给一个函数而不是字符串作为replace(,那么replace()将提供当前匹配的部分作为该未命名参数函数的参数。甜蜜的机制,假设这在任何浏览器上都有效;)
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 重定向到父窗口中的链接
- 函数打开链接时不使用弹出窗口阻止程序
- 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开
- 链接中有php变量的Javascript打开窗口
- 为在新窗口中打开外部链接创建异常
- 打开'选择文件'窗口单击锚链接(跳过单击'选择文件'按钮)
- 浏览器窗口中的应用内FB页面插件链接
- 传单:如何在弹出窗口中创建链接选择器
- SVG编辑链接获胜't在新窗口中打开
- 如何在网格视图中每次单击按钮或链接时打开不同的新弹出窗口
- 在聊天窗口中检测链接单击事件
- 具有双重功能的按钮:在_blank窗口中打开一个链接,再加上_self中的另一个链接
- 提交表单的可能性(左-/中-/在新选项卡或窗口中打开-)单击html链接
- 一个链接打开两个窗口
- 如何在指定的打开窗口中打开链接
- Sencha触摸,在新的浏览器窗口中打开网络链接
- 通过程序在窗口中打开一个外部URL,链接会附加到网站上
- Iframe contact form dosen't send父窗口链接
- 我可以跟踪一个新的窗口链接的推荐人