- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找到的这个 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/
我是一名优秀的程序员,十分优秀!