我正在尝试为自己创建一个实用工具镀铬扩展程序,以自动将所有网站上的plus.google.com/XXXX中的网址更改为plus.google.com/u/1/XXXX,不包括plus.google.com本身。我已经成功地做到了这一点,它并不适用于所有网站,特别是因为我正在使用innerHTML并从那里更改URL。
所以我想到的是在加载时捕获URL并在中途更改它。但是,我想知道它来自哪个引荐来源,因为如果从plus.google.com本身点击它,那么我不想要对它做任何事情。我只想对plus.google.com以外的链接使用网址更改。
如何使用Chrome扩展程序进行此操作?
答案 0 :(得分:0)
我能够通过content scripts在概念上做类似的事情并在目标页面上注入脚本。这不会更改页面中的链接,而是将用户转发到新URL,只要它不是从特定主机引用即可。我在一个名为script.js的文件中做了类似的事情:
if (document.referrer != "") // Check if referrer isn't empty
{
var referringURL = document.referrer;
var referrerArray = referringURL.split('/'); // Split the referrer into an array.
if (referrerArray[2] != "plus.google.com") // Grab the hostname and compare
{
location.replace("https://plus.google.com/u/1/"+referrerArray[3]); // Redirect with XXXX
}
}
类似的东西将出现在清单中:
"content_scripts": [
{
"matches": [
"https://plus.google.com/*",
"http://plus.google.com/*"
],
"js": ["script.js"]
}
]
我没有测试过这个特定的代码,但它与我使用的代码非常相似。它不是很优雅,我知道,所以我已经切换到webRequest / webRequestBlocking,我认为这更好,但我仍然试图找出如何通过引用来做排除。不幸的是,那部分没有运气。