Това може да попадне в категорията „не правете това“, но аз се опитвам да разработя разширение за chrome, което ефективно инжектира достъпен в мрежата сървърен скрипт („sw.js“) в страницата на потребителя и след това се регистрира обслужващ работник към този скрипт.
В момента имам следното: Manifest.json:
{
"manifest_version": 2,
"name": "MyApp",
"description": "none",
"version": "1.0",
"incognito": "split",
"web_accessible_resources": ["sw.js"],
"permissions": [
"webRequestBlocking","webRequest",
"*://*/*"
],
"background":
{
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["initPage.js"],
"all_frames": false
}]
}
background.js
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {redirectUrl: chrome.extension.getURL("sw.js")};
},
{urls: ["*://*/switchme.js"]},
["blocking"]);
initPage.js:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/switchme.js').then(function(registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
console.log('ServiceWorker registration failed: ', err);
})
}
Надяваме се, че от това ще видите какво опитвам да постигна. По принцип искам да се опитам да регистрирам service worker в sw.js
, който се хоства в уеб-достъпните скриптове в разширението. Начинът, по който вярвам, че мога да направя това, е като прихвана заявката за switchme.js
и я пренасоча да върне sw.js
.
Единственият проблем с този подход е, че моят браузър chrome се срива, когато се опитам това. Проследих стека в реда на extensions::sendRequest
:
nativeFunction(functionName,
request.args,
requestId,
hasCallback,
optArgs.forIOThread,
optArgs.preserveNullInObjects);
Оценяват се всякакви идеи за отстраняване на грешки или шамари с хубаво обяснение защо съм луд да мисля, че това може да проработи.
"*://*/switchme.js"
? - person Dayton Wang   schedule 10.06.2015chrome://crashes/
, след като задействате срив и подадете бъг с информацията от там. Това, което се опитвате, в идеалния случай трябва да се провали със смислено съобщение за грешка, вместо да се срине. - person Jeff Posnick   schedule 15.06.2015