注入文件上声明的函数无法从chrome扩展中的background.js中识别

时间:2016-01-07 17:51:58

标签: javascript google-chrome google-chrome-extension virtual-reality webvr

我正在尝试使用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()未定义。我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:3)

您的后台脚本无权访问您的内容脚本。你应该从background.js向你的页面发送一条消息,并在那里有一个监听器来调用函数initVR()

答案 1 :(得分:2)

您必须使用消息传递与内容脚本进行通信,因为浏览器的扩展名是单个后台脚本,它必须标识选项卡

https://developer.chrome.com/extensions/messaging