我正在教自己如何编写Chrome扩展程序,但我无法启动并运行基本功能。
我正在尝试编写一个修改指定页面上所有链接的扩展程序。作为概念验证,我正在尝试修复它,以便google.ca
结果页面上的所有链接指向www.gooogle.cn
这是我的manifest.json
:
"name": "Google Link Fixer",
"version": "0.1",
"permissions": ["*://www.google.*/*"],
"content_scripts": [
{
"matches": ["*://www.google.*/*"],
"js": ["jquery.js", "content_script.js"]
}
],
"manifest_version": 2
}
以下是content_script.js
中的javascript(请注意jquery.js
位于同一目录中):
$(document).ready(function(){
$("a[href^='https://www.google.ca']")
.each(function()
{
this.href = this.href.replace(/^https:\/\/www\.google\.ca/,
"https://www.google.cn");
});
});
而且......没什么。我可以在开发人员工具中看到正在加载扩展,代码在Content Scripts下,但我没有看到预期的结果。任何帮助表示赞赏。
答案 0 :(得分:2)
我希望我能够将@charlietfl给出的答案标记为正确答案。它让我走上正轨。
我的剧本有两个问题:
我用作概念验证的Google搜索结果页面使用的是相对链接,而不是绝对的链接,因此我的替换函数(正确地)找不到正则表达式模式/^https:\/\/www\.google\.ca/
。 教训:不要指望Google提供的“简单”页面包含简单的HTML。
据我所知,Google至少会动态创建一些链接 - 这种模式在其他网站上也很常见。我在专用的点击处理程序中重写了脚本,这就是让我走上正轨的原因。 课程:仔细考虑你想要完成的事情。我并没有试图改变页面上的所有链接;我想重定向某些链接指向的位置。在链接点击级别然后在整页级别上进行行为修改更有效 - 并且更容易实现。
我使用的代码是:
$(document).on("click", "a", function(){
var link_target = $(this).attr('href');
var converted_url = link_target.replace(/SOME_REGEX/, REPLACEMENT_TEXT);
$(this).attr('href', converted_url);
});