使用JavaScript获取规范URL

27

我正在内部构建一个网站,页面在中设置了规范化的URL,指定了页面的外部链接。

有没有办法使用JavaScript获取规范化的URL?


2
亲切的先生,请提供一个HTML示例,以便我们更好地帮助您。 - pixelbobby
3个回答

70

现在你可以简单地使用:

document.querySelector("link[rel='canonical']").getAttribute("href");

上面的回答将会给你 href 属性的真实值。因此,如果你没有完整的 URL,它会显示像 /query.html 这样的 href。

但是 .href 方法总是会给你包含域名的完整 URL,例如 http://example.com/query.html

document.querySelector("link[rel='canonical']").href;

8
是的。但是为了实现那么简单的功能而添加90kB的jQuery不是一个好选择,在我看来 :-) - Rafał Malinowski
1
同意,但如果决定仍然使用jQuery,它对于那些选择器也很方便。 - Shadow The Spring Wizard
3
我已经更新了答案,并额外解释了 .href 方法的不同之处。 - Rafał Malinowski

22

jQuery版本;

$("link[rel='canonical']").attr("href")

18

像这样吗?

<!DOCTYPE html>
<html>
    <head>
        <link href="http://www.example.com/" rel="canonical" />
        <title>Canonical</title>
        <script type="text/javascript">
            window.onload = function () {
                var canonical = "";
                var links = document.getElementsByTagName("link");
                for (var i = 0; i < links.length; i ++) {
                    if (links[i].getAttribute("rel") === "canonical") {
                        canonical = links[i].getAttribute("href")
                    }
                }
                alert(canonical);
            };
        </script>
    </head>
    <body>
        <h1>Canonical</h1>
    </body>
</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接