使用JavaScript或jQuery替换现有的canonical标签

6
我希望创建一个Adobe Muse小部件,用于替换Muse自动生成的规范标签。
我知道这对大多数机器人无效,因为它们在爬行页面时不运行任何脚本,但我已经阅读到Google的机器人在爬取时会运行脚本。
我发现很多问题都是关于如何替换链接的href,但我似乎找不到任何有关替换规范标签href URL的问题。 我几乎肯定这就是我的起点...只是不知道该怎么完成它:
<script>
    $(document).ready(function() {
         $('link[rel=canonical]').attr('href' 'NEW_LINK');
    }
</script>

1
你想让脚本做什么?你是想完全替换<link>标签,还是尝试更改现有<link>标签的rel属性,或其他事情? - IronFlare
1
我想要替换 href 链接的 URL。 - John R Perry
我重新阅读了你的问题,现在我明白你在问什么了。当我在打字的时候,Moogs发布了一个可行的解决方案。请参见下文。 - IronFlare
2个回答

14
$('link[rel="canonical"]').attr('href', 'NEW_HREF_GOES_HERE');

好的,所以这应该可以工作,对吧?<script> $(document).ready(function() { if (canonical = $('link[rel=canonical]').attr('href', 'bar')); } </script> - John R Perry
@JohnRPerry 有几个问题:在你的if语句中,你正在将jquery对象分配给canonical变量。如果你想进行比较,请使用三个等号符号。另一个问题是你正在if语句中设置href值。虽然这确实设置了它,但这是不好的做法,因为它在if语句内部。我的问题是,你在比较什么?canonical变量是什么? - Miguel Mota
抱歉,我的意思是要去掉if语句。所以我的意思是问这个代码是否应该有效: - John R Perry

6

对于那些热爱纯JavaScript的人:

const canonical = document.querySelector('link[rel="canonical"]');
if (canonical !== null) {
  canonical.href = 'NEW_HREF_GOES_HERE';
}

如果跨浏览器兼容性很重要,而且您没有使用转换器,请将const更改为var


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