2016-03-10 10 views
5

Załóżmy, że w Google Chrome są zainstalowane 2 rozszerzenia.Skrypt zawartości nie działa w elemencie iframe na stronie innego rozszerzenia


1st extension biegnie content.js na w3.org:

manifest.json:

"content_scripts": [{ 
    "matches": [ "https://www.w3.org/*" ], 
    "all_frames": true, 
    "js": [ "content.js" ] 
}] 

content.js:

alert('content'); 

2-cia przedłużenie page.html, który ładuje w3.org do iframe:

manifest.json:

"web_accessible_resources": ["page.html"] 

page.html:

<!DOCTYPE html> 
<iframe src="https://www.w3.org/"></iframe> 

Teraz wpisz w pasku adresu chrome-extension://2nd-extension-id/page.html. Zobaczysz stronę w3.com, ale plik content.js nie był uruchomiony (nie ma okna alert()). Nie widzę błędów w konsoli.

Pytanie brzmi: jak zezwolić na uruchamianie skryptu treści w tym elemencie iframe?


stworzyłem Chrome issue. Status: WontFix, niestety. Ale to można zmienić w przyszłości ...

+0

Po prostu nie możesz. Rozszerzenia nie mogą działać w innych rozszerzeniach. Dopuszczenie takiej rzeczy umożliwi złym rozszerzeniom robienie bardzo złych rzeczy. –

+0

@Marc Guiselin, nie. w3.org nie jest częścią rozszerzenia i działa we własnym kontekście ze standardowymi uprawnieniami. – CoolCmd

Odpowiedz

-1

Państwo nie może z rozszerzeniami, ale można zrobić coś podobnego w Google Apps: można użyć webview zamiast iframe. Dlatego możesz wstrzykiwać skrypt metodą executeScript.

+1

"' 'jest dostępne tylko w aplikacjach Chrome, a nie w rozszerzeniach. – Xan

Powiązane problemy