我正在研究一个'简单'扩展,将参数添加到当前网址的末尾。我已设法获取当前网址,但无法执行重定向以使用添加的参数刷新页面。我的代码如下:
的manifest.json
{
"name": "Something",
"version": "1.0",
"manifest_version": 2,
"description": "Woohoo",
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"persistent": false,
"scripts": ["bgscript.js"]
},
"permissions": [
"tabs"
]
}
bgscript.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
var currentUrl = tabs[0].url;
chrome.extension.sendRequest({redirect: currentUrl + "?customparam=1"});
});
});
有人对如何执行这样的重定向有任何想法吗?
答案 0 :(得分:5)
单击浏览器操作时的活动选项卡将作为参数传递给onClicked
侦听器回调。
此外,正如您的评论中所提到的,需要稍加注意将自定义查询参数附加到正确的位置,并在其前面加上正确的符号。具体来说,自定义参数应放在之前哈希(如果有)和路径名之后(如果有的话),但如果有更多查询参数,则应在&
之前添加?
。
var customParam = encodeURI('customparam=1');
chrome.browserAction.onClicked.addListener(function (tab) {
var url = tab.url;
var hashStart = (url.indexOf('#') === -1) ? url.length : url.indexOf('#');
var querySymbol = (url.indexOf('?') === -1) ? '?' : '&';
var newUrl = url.substring(0, hashStart) + querySymbol + customParam +
url.substring(hashStart);
chrome.tabs.update(tab.id, {url: newUrl});
});
答案 1 :(得分:0)
没关系,明白了:
<强> bgscript.js 强>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
var currentUrl = tabs[0].url;
var newUrl = currentUrl + "?customparam=1"
chrome.tabs.update({url:newUrl});
});
});