javascript - 如何修改此 Javascript 以在不同窗口中打开链接?

标签 javascript html regex parsing hyperlink

我找到的这个 Javascript here将方法 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);
    });
};

首先,这是如何工作的?我对正则表达式了解一点,可以制作简单的表达式,但我什至没有在这里看到“href”这个词!

如何修改以便链接在另一个窗口中打开?即如何在此处添加 target="_blank" 属性?

最佳答案

First of all, how does this even work?

显然,在代码的其他地方您会发现:

String.prototype.link = function(url) { /* ... */ };

...这将以返回字符串结束。 replace 所做的是调用传递给它的匿名函数,并将与正则表达式匹配的字符串作为参数; replace 期望该函数返回适当的替换,然后将其插入到字符串中。 (replace 的第二种形式,它接受一个函数而不是字符串作为第二个参数,它非常有用,但并不像您预期​​的那样广为人知。)匿名函数正在调用 link 函数在参数 (url) 上,它是一个字符串,并返回结果。因此,我相信您会在代码的某处找到一个 link 函数被添加到 String.prototype

至少一些浏览器向 String 实例添加了一堆非标准方法,将字符串包装在标签中; link是其中之一。它仅返回使用给定 URL 的 a 元素的标记。

How can this be modified so that the link opens in another window?

实际上第一个问题的答案就是第二个问题的答案:大概您会在 link 函数中找到标记;你可以在那里更新它。

只需将非标准 link 函数的使用替换为您自己的字符串连接即可:

return '<a href="' + url + '">' + url + '</a>';

通常我会说您应该确保对 HTML 实体进行编码,但是当您已经处理 HTML 源字符串时,大概它们应该已经被正确编码了。

关于javascript - 如何修改此 Javascript 以在不同窗口中打开链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707374/

相关文章:

python - 如何使用 Python 或正则表达式在引号中获取对话行?

javascript - 获取触摸事件路径中的元素

javascript - 从 MP3 流中获取 ID3 标签

html - IE7 并在 MS CRM 的 iframe 中发布表单 = 新窗口

javascript - 有什么方法可以将单选按钮列表动态更改为选择下拉列表吗?

html - Bootstrap NavBar 与中心对齐的元素

python - 如何提取两个不同匹配项之间的文本?

javascript - 在js中使用正则表达式从字符串中提取正确的用户名

javascript - 惯用的 Kotlin2JS Gradle 设置

javascript - 设置 context.canvas.width 会更改 context.font