Не удается прочитать свойство onBoundsChanged из неопределенного - PullRequest
0 голосов
/ 25 ноября 2018

Когда я пишу расширение для Google Chrome, я получил ошибку в качестве заголовка вопроса.Ниже мой код:

chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.executeScript(null, {
    file: "libs/jquery.js"
}, function () {
    chrome.tabs.executeScript(null, {
        file: "src/content.js"
    });
});
});

chrome.app.window.onBoundsChanged.addListener(function (tab) {
chrome.tabs.executeScript(null, {
    file: "libs/jquery.js"
}, function () {
    chrome.tabs.executeScript(null, {
        file: "src/content.js"
    });
});
});

Во-первых, я добился успеха с событием onClicked.Но я хочу работать над расширением, когда я изменяю размер окна.Но когда я добавляю второе событие.Произошла ошибка

Пожалуйста, помогите мне эту ошибку Спасибо

manifest.json

{
"name": "Bootstrap Grid for any Website",
"version": "1.1.0",
"manifest_version": 2,
"description": "Quickly toggle a Bootstrap Grid for any website. Easy to use, easy success.",
"browser_action": {
"default_icon": "src/icon48.png"
},
"background" : {
"scripts" : [
  "src/background.js"
]
},
"content_scripts": [
{
  "js":         [ "src/send_value.js" ],
  "matches":    [ "<all_urls>" ],
  "all_frames": true,
  "run_at":     "document_end"
}
],
"permissions": ["activeTab"]
}

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Ваша папка расширения выглядит следующим образом:

Folder strucrure

Ваш manifest.json файл:

{
  "name": "Bootstrap Grid for any Website",
  "version": "1.1.0",
  "manifest_version": 2,
  "description": "Quickly toggle a Bootstrap Grid for any website. Easy to use, easy success.",
  "browser_action": {
    "default_icon": "src/icon48.png"
  },
  "background" : {
    "scripts" : [
      "background.js"
    ]
  },
  "permissions": [
    "tabs",
    "<all_urls>"
  ],

  "web_accessible_resources":[
    "src/content",
    "src/content_temp",
    "libs/jquery.js"
  ]

}

background.js:

chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript(null, {
        file: "libs/jquery.js"
    }, function () {
        chrome.tabs.executeScript(null, {
            file: "src/content.js"
        });
    });
});

chrome.runtime.onMessage.addListener(function(message){
    if(message.info !== 1) return;

    chrome.tabs.executeScript(null, {
            file: "src/content_temp.js"
    });
});

И твой send_value.js файл, который я положил в content.js:

window.addEventListener('resize', function (e) {
    // here you send message to background.js
    var message = {info: 1}
    chrome.runtime.sendMessage("", message);
});


function devTool() {

Что касается меня, то он отлично работает!: -)

0 голосов
/ 25 ноября 2018

Я думаю, что вы перепутали расширения Chrome и приложения Chrome.Как мы можем прочитать здесь , chrome.app.window is

не связано ни с одним из окон браузера Chrome

Я рекомендую вам создать скрипт content.js, гдевы помещаете что-то вроде этого:

window.addEventListener('resize', function(e){
  ....
   // here you send message to background.js
   var message = { info: "window resized");
   chrome.runtime.sendMessage( "", message );
}) 

content.js должен выполняться на каждой вкладке, указанной вами в файле манифеста.

В вашем background.js вы должны написать:

chrome.runtime.onMessage.addListener(function(message){
   if(message.info === "window resized"){
       chrome.tabs.executeScript(null, // ..... the stuff you've written above
      ......
   }
}); 

Ссылки:

chrome.runtime.sendMessage

chrome.runtime.onMessage

Удачи!

UPD (в файле манифеста):

      "background": { 
            "scripts": [ "background.js"]
        },
       "content_scripts": [
         {
           "js":         [ "content.js" ],
           "matches":    [ "<all_urls>" ],
           "all_frames": true,
           "run_at":     "document_end"
         }
      ],

UPD 2. Этот фрагмент взят из моего рабочего манифеста расширения:

"web_accessible_resources": [
    "main.js",
    "style.css",
    "options/options.css",
    "options/options.js"
  ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...