注入文件上声明的函数无法从 chrome 扩展名中的 background.js 识别
Function declared on injected file not recognize from background.js in chrome extension
我正在尝试使用 https://github.com/povdocs/webvr-starter-kit 创建一个 chrome PageAction 扩展。
在我的 manifest.json
文件中,我使用 content_scripts
加载 jquery.js
和另一个 inject.js
.
在我的 inject.js
上,我有以下代码:
function initVR() {
VR.floor();
VR.box({ color: '#FFFFFF' }).moveTo(0, 1.4, 0).setScale(5,4,0);
var text = VR.text({
wrap: 4.1,
font: '24pt Roboto',
textAlign: 'left',
fillStyle : '#000000',
text : 'Hello world test'
})
.moveTo(.1, 1.4, 0);
}
在我的 background.js
文件中,我
chrome.pageAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.ib, {
file: "src/inject/vr.dev.js"
}, function(){
initVR(); //Calling the function I declared on inject.js
});
这里的想法是,当一个人点击 pageAction 按钮时,它会注入 vr.dev.js
并初始化设置。
当我实现这个时,我收到一条错误消息,指出 initVR()
未定义。我做错了什么?
您的后台脚本无法访问您的内容脚本。您应该改为从 background.js 向您的页面发送一条消息,并在那里有一个侦听器来调用函数 initVR()
你必须使用消息传递来与内容脚本通信,因为你的浏览器的扩展是一个单一的后台脚本,它必须识别标签
我正在尝试使用 https://github.com/povdocs/webvr-starter-kit 创建一个 chrome PageAction 扩展。
在我的 manifest.json
文件中,我使用 content_scripts
加载 jquery.js
和另一个 inject.js
.
在我的 inject.js
上,我有以下代码:
function initVR() {
VR.floor();
VR.box({ color: '#FFFFFF' }).moveTo(0, 1.4, 0).setScale(5,4,0);
var text = VR.text({
wrap: 4.1,
font: '24pt Roboto',
textAlign: 'left',
fillStyle : '#000000',
text : 'Hello world test'
})
.moveTo(.1, 1.4, 0);
}
在我的 background.js
文件中,我
chrome.pageAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.ib, {
file: "src/inject/vr.dev.js"
}, function(){
initVR(); //Calling the function I declared on inject.js
});
这里的想法是,当一个人点击 pageAction 按钮时,它会注入 vr.dev.js
并初始化设置。
当我实现这个时,我收到一条错误消息,指出 initVR()
未定义。我做错了什么?
您的后台脚本无法访问您的内容脚本。您应该改为从 background.js 向您的页面发送一条消息,并在那里有一个侦听器来调用函数 initVR()
你必须使用消息传递来与内容脚本通信,因为你的浏览器的扩展是一个单一的后台脚本,它必须识别标签