我如何在后台使用自定义功能的Chrome扩展
How do I use a custom function in background.js for a Chrome Extension?
我正在编写一个Chrome扩展,我想在我的background.js中调用一个函数。
功能如下:
function getUrlVars(url) {
var vars = {};
var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
if(vars[key]){
if(vars[key] instanceof Array)
vars[key].push(value);
else
vars[key] = [vars[key], value];
}else
vars[key] = value;
});
return vars;
}
返回url的一个参数。我把这个函数放在后台。js中,但当我调用它时,它不起作用。我在这里调用函数:
chrome.webRequest.onBeforeRequest.addListener(function(details){
chrome.tabs.get(details.tabId, function (tab) {
source=getUrlVars(details.url)[iapisource];
id=getUrlVars(details.url)[iapiid];
redirectUrl=tab.url+"?iapisource="+source+"&iapiid="+id;
});
return {cancel : true , redirectUrl : redirectUrl};
},
// block requests matching this url
{urls: ["*://*/*iapisource*iapiid*"]},["blocking"]);
这里我取请求前的URL,并在其后面附加新URL的参数。
我必须把函数放在哪里,我如何调用它?
我可以给你一条鱼,但我要教你如何钓鱼。
1)你应该调试你的代码,如果它不工作。StackOverflow不是一个在线调试器。
转到chrome://extensions/,找到你的扩展,点击你的背景页,转到控制台选项卡,调查你在那里看到的错误。
2)对于一件事,而不是这个:
source=getUrlVars(details.url)[iapisource];
我想你想要的是这个:
source=getUrlVars(details.url)['iapisource'];
或者更好:
var params = getUrlVars(details.url);
var redirectUrl = tab.url+"?iapisource=" + params.iapisource + "&iapiid=" + params.iapiid;
3) tabs.get
回调函数只会在你已经从onBeforeRequest
返回后运行
// 1.
chrome.webRequest.onBeforeRequest.addListener(function(details){
// 2.
chrome.tabs.get(details.tabId, function (tab) {
// 4.
source=getUrlVars(details.url)[iapisource];
id=getUrlVars(details.url)[iapiid];
redirectUrl=tab.url+"?iapisource="+source+"&iapiid="+id;
});
// 3.
return {cancel : true , redirectUrl : redirectUrl}; // redirectUrl is undefined!
},
{urls: ["*://*/*iapisource*iapiid*"]},
["blocking"]
);
您可以使用extension.getBackgroundPage
来访问您的背景页面的window
对象,该对象通常在背景页面中包含您的全局函数。
这个问题在这里进一步讨论。
如果你不能这样做,你应该看看消息传递
相关文章:
- 谷歌电子表格的自定义xml解析功能
- 为什么获胜'我的自定义功能工作
- 自定义HTML5视频控件-退出按钮不会启动全屏切换功能
- 如何通过悬停或点击谷歌电子表格中的单元格来运行自定义功能
- 将自定义Google Sheets功能转换为附加组件
- 使用html 5对元素执行自定义表单验证功能
- 具有onclick功能的自定义复选框在实际切换复选框之前执行功能
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- CKEditor-自定义单词或短语插入功能
- 通过单向绑定的过滤功能提高自定义角度下拉菜单中的角度性能
- 角度:ui选择.具有“刷新”功能的自定义标记
- 从对象旋转对象.带有自定义动画功能的trix.setrotationfromleuler
- 在PhpStorm中创建自定义语言,扩展所有html语言功能
- "键未定义”;在AngularJS'的自定义筛选功能
- Wordpress自定义程序具有页面编辑功能
- 自定义滑块-寻找额外功能的指导
- 通过自定义JS功能激活Sencha Touch选项卡
- 使用Ryan Fait的“自定义表单元素”时的“全选”功能
- 如何在初始功能之外以适当的 AMD 方式使用自定义 Dojo 模块
- 自定义打印功能,打印内容未显示在第一个事件触发器上