Функцията, декларирана в инжектирания файл, не се разпознава от background.js в разширението на chrome

Опитвам се да използвам https://github.com/povdocs/webvr-starter-kit, за да създадете разширение PageAction за Chrome.

В моя 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() не е дефинирано. Какво правя неправилно?

въведете описание на изображението тук


person ptamzz    schedule 07.01.2016    source източник


Отговори (2)


Трябва да използвате предаване на съобщения, за да комуникирате със скрипта за съдържание, тъй като разширението на вашия браузър е един фонов скрипт, той трябва да идентифицира раздела

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

person krishnakumar sekar    schedule 07.01.2016

Вашият фонов скрипт няма достъп до скрипта ви за съдържание. Вместо това трябва да изпратите съобщение от background.js до вашата страница и да имате слушател там, който да извика функцията initVR()

person jianweichuah    schedule 07.01.2016