Chrome.tabs.executeScript ();+ .addEventListener ("клик", ...);внедрить код в активную веб-страницу через расширение Chrome - PullRequest
0 голосов
/ 11 июня 2018

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

popup.html>

<!DOCTYPE html>
<html>
    <body>
        <button id="Mr_Button-Click_Extend">hello this is a test</button>
    </body>
</html>
<script>
document.getElementById("Mr_Button-Click_Extend").addEventListener("click", TheGreatEmbed() 
{
chrome.tabs.executeScript(null, {file: 'js/inject.js'});
});
</script>

js / inject.js>

document.write('<h1 style="position: fixed; top: 200; left: 200; z-index: 999999;">testing... testing...</h1>');

manifest>

{
"name": "GAME HUB.io copy",

"version": "0.0.1",
"manifest_version": 2,
"description": "YEET",


"homepage_url": "https://www.youtube.com/channel/UCbmPRCzP88oaId-4piz5Weg",

"icons": {
    "128": "icons/Icon-128.png"
},
    "default_locale": "en",

    "browser_action": {
    "default_icon": "icons/Icon-128.png",
    "default_title": "GAME HUB.io TEST MESSAGES",   
    "default_popup": "src/html/popup.html"
},
"permissions": [
    "activeTab",
    "http://*/*",
"https://*/*",
"<all_urls>",
    "webRequest"
]
}

Этот вопрос был упрощен, чтобы его было легче понять ... Эта попытка решить другой более сложный вопрос была предпринята из-заОтвет @Drapaster на старый вопрос.

Приведенные выше примеры кода - это просто базовая функциональность, к которой я стремлюсь.

Вопрос в том, почему это не сработало?Что мне здесь не хватает?Нужно ли перемещать содержимое из тегов сценария в новый файл с именем, например: popup-helper.js?Изменить манифест?Или что-то еще?Пожалуйста, помогите ...

1 Ответ

0 голосов
/ 12 июня 2018

In в соответствии с https://developer.chrome.com/extensions/contentSecurityPolicy#JSExecution для расширений chrome есть ограничение на использование встроенного кода JavaScript, например:

onclick = "..."

но

chrome.tabs.executeScript(null, {file: 'js/inject.js'});

выглядит правильно.

Попробуйте прикрепить событие клика следующим образом:

document.getElementById("someH2Id...").addEventListener("click", function()
{
    chrome.tabs.executeScript(null, {file: 'js/inject.js'});
});
...