大家好!我决定第一次尝试为Chrome进行扩展,我有这个想法,但我不知道如何开始。我希望你能指出我正确的方向。
我想检测某个URL是否已打开,然后更改其某个查询字符串的值。例如:
我该怎么做?我认为所需的权限是WebRequest和WebRequestBlocking,但我不确定。我尝试了这里的步骤:Detect if URL is opened - Chrome extension但是,即使将background_page更改为后台以考虑我的清单版本(我的Chrome版本为21.0.1180.89),它似乎也无效。我希望我可以修改那里的代码,但遗憾的是它对我不起作用,现在我迷路了。
答案 0 :(得分:1)
在上面的评论中关注Rob W的链接(感谢Rob!)我想出了一些符合我想要的代码。首先,当我在预期的URL中时,我将以下内容添加到清单中以运行内容脚本:
"content_scripts": [
{
"matches": [
"http://downloadpage.url/*"
],
"js": ["background.js"]
}
]
显然网址是假的......
然后使用以下函数创建了一个名为background.js的文件,这样可以轻松获取查询字符串。原始代码来自here,我对其进行了一些修改,使其可以重复使用其他链接或字符串。:
function getQueryString(URL) {
if (!URL) {
URL = location.search;
}
else
{
var a = document.createElement('a');
a.href = URL;
URL = a.search;
}
var result = {}, queryString = URL.substring(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(queryString)) {
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
return result;
}
最后,使用修改后的查询字符串进行重定向的代码如下:
if (page == "info")
{
var ID = getQueryString()["id"];
location.replace('http://downloadpage.url/?page=download&id='+ID;);
}
我仍然愿意接受更好,更优雅的解决方案,但这样做符合我的要求。如果你有更好的主意,请告诉我。干杯!