Расширение Chrome - активация скрипта в popup.html для текущей вкладки - PullRequest
0 голосов
/ 14 мая 2018

Я не уверен, как правильно задать этот вопрос, потому что это трудно объяснить, поэтому я буду использовать пример.

Я пытаюсь выяснить, как активировать что-то вроде букмарклета, используя ссылку в popup.html расширения chrome, которое будет взаимодействовать с текущей вкладкой.

Например: если щелкнуть значок расширения Chrome, появится всплывающее окно (обычное раскрывающееся окно). В этом окне будет, скажем, кнопка, которая увеличивает размер изображений (например, букмарклет для панели закладок).

Я хочу, чтобы эта кнопка взаимодействовала с текущей открытой вкладкой, а не со страницей popup.html.

У меня есть соответствующие разрешения (все URL и вкладки) внутри манифеста, а также определяемые сценарии. Там все хорошо. Но я знаю, что мое решение (не работающее), вероятно, далеко от истины, и я могу даже не быть близким на этом этапе. Поэтому я прошу помощи здесь.

background.js

function zii() {

    function zoomImage(image, amt) {
        if (image.initialHeight == null) { /* avoid accumulating integer-rounding error */
            image.initialHeight = image.height;
            image.initialWidth = image.width;
            image.scalingFactor = 1;
        }
        image.scalingFactor *= amt;
        image.width = image.scalingFactor * image.initialWidth;
        image.height = image.scalingFactor * image.initialHeight;
    }
    var i, L = document.images.length;
    for (i = 0; i < L; ++i) zoomImage(document.images[i], 2);
    if (!L) alert("This page contains no images."); 

}

popup.html

<button onClick="zii()">Test</button>

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

Я, очевидно, понятия не имею, что я делаю неправильно или возможно ли то, что я пытаюсь сделать.

Объективное резюме: Проще говоря, я просто хочу нажать на кнопку в popup.html и увеличить размер изображений на открытой в данный момент вкладке (так же, как вы сделали бы это с помощью букмарклета).

1 Ответ

0 голосов
/ 14 мая 2018

Сначала я рекомендую прочитать об архитектуре расширений .

Если вы хотите внедрить файл .js или некоторый код в текущее окно, нажав кнопку во всплывающем окне, вы можете простосделайте это, используя chrome.tabs.executeScript внутри обработчика нажатия кнопки, передавая null в качестве первого аргумента tabId, поскольку по умолчанию используется активная вкладка текущего окна.

Например,:

chrome.tabs.executeScript(null, {
    code: "console.log('Injected.')"
});

Или:

chrome.tabs.executeScript(null, {
    file: "content.js"
});

Убедитесь, что у вас есть "activeTab" в ваших manifest.json разрешениях.

...