好的,这很简单,您只需要一个内容脚本,并且如果您在项目中包含 jquery。像这样的事情会做到这一点。
您将需要创建一个这样的文件夹结构:
------------------
-- + - Extension
|----- manifest.json
|----- jquery.js (optional as per the solution)
|----- contentScript.js (important)
进入 chrome 的开发者模式(google that)并将扩展加载为解包。
manifest.json 看起来像:
{
"name" : "",
"version" : "",
"manifest_version" : 2,
"description" : "",
"content_scripts" :
[{
"matches" :
[
"*://*"
],
"js" :
[
"jquery.js",
"contentScript.js"
],
"all_frames" : true
}],
"permissions" :
[
"*://*"
]
}
contentScript.js 看起来像这样
$(document).ready(function(){
$('a').each(function(){
if($(this).attr('href').indexOf("example.com") != -1){
$(this).attr('href') = $(this).attr('href').replace("example.com","brandnewexample.com");
}
});
});
或者您也可以使用它,以防链接不是完全限定的域(阅读更多)。
$(document).ready(function(){
$('a').each(function(){
if(this.href.indexOf("example.com") != -1){
this.href = this.href.replace("example.com","brandnewexample.com");
}
});
});
从理论上讲,您可以完全避免使用 jquery 并使用旧代码。我不确定这是否有效,但您可以尝试。您可以从 manifest.json 中删除 jquery 并将 contentScript 替换为:
document.onreadystatechange = function() {
if (document.readyState === 'complete') {
// DOM should be ready!
var links = document.getElementsByTagName(tag);
for (var i = 0; i < links.length; i++) {
if (links[i].href.indexOf("example.com") != -1) {
links[i].href = links[i].href.replace("example.com","brandnewexample.com");
}
}
}
};
如果您需要在每次将内容添加到页面时触发此功能,您只需在 contentScript.js 中执行此操作(阅读更多):
$(document).bind('DOMSubtreeModified', processLinks);
$(document).ready(processLinks);
function processLinks(){
$('a').each(function(){
if(this.href.indexOf("example.com") != -1){
this.href = this.href.replace("example.com","brandnewexample.com");
}
});
});
如果您需要显示图标或其他东西等花哨的东西,请寻找添加的权限。但基本上 contentScript.js 中的任何 JS 在服务时都会像页面的一部分一样被执行。