javascript расширение Перезагрузка среды выполнения сценария содержимого расширений Chrome



chrome расширение jquery (1)

Насколько я могу судить, нет автоматического способа повторного ввода сценариев контента, например, во время обновления расширения. Что вы можете сделать, так это найти все вкладки, чей URL соответствует шаблону, который вам нужен, и программно повторно вставить скрипты содержимого с помощью chrome.tabs.executeScript .

Обратите внимание, что для этого метода требуется добавить разрешение для того же шаблона URL-адреса, что и для вашего скрипта содержимого.

manifest.json:

"content_scripts":    
[
    {
        "matches": [ "http://*.google.com/*" ],
        "js": [ "content_script.js" ]
    }
], 
"permissions":        
[ 
    "tabs", "http://*.google.com/*"
]

Background.js:

chrome.runtime.reload();
chrome.tabs.query({ url: "http://*.google.com/*" }, function(tabs)
{
    for(var i = 0; i < tabs.length; i++)
    {
        chrome.tabs.executeScript(tabs[i].id, { file: "content_script.js" }, function() {});
    }
});

Я хотел бы подражать эффекту window.location.reload() , но только для «изолированного мира», в котором работает мой скрипт контента. То есть, удалите все существующие JS, в частности обратные вызовы и привязки событий. Есть ли хороший способ сделать это?

Примечание: chrome.runtime.reload() не работает для этого; он имеет эффект перезагрузки расширения и фонового сценария, но он не перезагружает существующие сценарии содержимого, пока пользователь не обновится.





google-chrome-extension