1

我正在尝试使用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()没有定义。我在做什么不正确?

在此处输入图像描述

4

2 回答 2

3

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

于 2016-01-07T18:13:46.310 回答
2

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

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

于 2016-01-07T18:13:48.810 回答