Плагин Chrome с функцией, но не найден - PullRequest
2 голосов
/ 15 декабря 2011

Я хочу, чтобы мой плагин внедрялся, чтобы при нажатии на кнопку он запускал функцию на текущей вкладке. Тем не менее, это дает мне функцию не найдена ошибка .. есть ли способ сделать это?

Это мой popup.html:

<script>
    function start() {
        chrome.tabs.executeScript( null,
            { code: "func_in_body()",
            allFrames: true } 
        );
    }

    start();
</script>

и даже если функция находится на странице, она выдает ошибку

Ошибка:

Uncaught ReferenceError: func_in_body is not defined
(anonymous function)

хотя одна из кнопок "onclick" использует его. Я не уверен, есть ли проблема с областью или нет.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

JavaScript, который вы вводите во вкладки, выполняется в изолированной среде и не имеет доступа к страницам JavaScript. Подробнее об этом вы можете прочитать в документации .

1 голос
/ 15 декабря 2011

Вам не нужно всплывающее окно для выполнения функции или сценария на текущей вкладке.Я сделал фоновую страницу следующим образом:

<html>
<head>
<script>
var iconName = "icon.png";
chrome.browserAction.setIcon({path:iconName});


  function onClicked(){
      chrome.tabs.executeScript(null, {file: "content_script.js"});
  }



  chrome.browserAction.onClicked.addListener(onClicked);
</script>
</head>
</html>

фоновая страница должна быть определена в manifest.json

...
"background_page": "background.html",
...

и, наконец, просто создайте content_script.js (или как вы там его называли) и введите свой код там.

Редактировать: Не забудьте добавить разрешения, которые ваш скрипт может выполнять на каждом сайте

...
"permissions": [
        "tabs",
        "http://*/*",
        "https://*/*"
    ],
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...