5

我想从带有 Jquery 的网站上获取网站图标的链接。我只是使用$('link[rel="shortcut icon"]').attr('href');它,它工作正常。

但是...我并不总是有完整的路径。例如我可以有类似的东西

http://mywebsite.com/myicon.ico

或者只是一个相对路径

/myicon.ico

我希望始终拥有完整路径,即使 Url 被编码为相对路径。有一个简单的解决方案吗?

我将其用作 Google Chrome 扩展程序中的内容脚本。

4

2 回答 2

8

如果你使用href节点的属性,你应该总是得到一个绝对路径:

var url = $('link[rel="shortcut icon"]')[0].href;

或者:

var url = $('link[rel="shortcut icon"]').prop('href');

或者,在纯 JavaScript 中:

var url = document.querySelector('link[rel="shortcut icon"]').href;
于 2013-03-05T09:42:30.960 回答
0

大多数网站在链接标签中没有 rel 的通用名称。有些有

<link rel="icon" href="https://pages.ebay.com/favicon.ico">
<link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d">

因此,如果在查询选择器中使用正则表达式,而不是匹配精确的 rel 标签,它会更好

$("link:regex(rel, .*icon.*)").prop('href')

如果这给出了无与伦比的伪类:正则表达式异常,您可以使用它

$('link[rel~="icon"]').prop('href') 
于 2020-02-25T04:07:35.620 回答