W pliku manifest.json oświadczam, że chcę, aby wprowadzić pewne skrypty, tak:Rozszerzenie Chrome nie może wpływać na elementy iframe?
{
"name": "my extension",
"version": "1.0",
"background_page": "background.html",
"permissions": ["contextMenus", "tabs", "http://*.example.com/*"],
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
}
W skrypcie partnerskiej utworzyć iframe, między innymi. Do tej pory działa dobrze. W ten sposób:
$('<div id="my_notifier"></div>').appendTo($('body')).html('<iframe src="http://example.com"></iframe>');
Problem polega na tym, że wewnątrz elementu iframe nie dziedziczy on niczego ze skryptów treści. Jeśli chcę używać jQuery, muszę użyć <script src=...
, aby dołączyć go ponownie do elementu iframe.
Wolę nie włączać jQuery, ponieważ już umieściłem go w rozszerzeniu. Nie chcę, aby użytkownik ponownie pobierał jQuery na każdej stronie, na której musi być uruchomione rozszerzenie.
Próbowałem już atrybutu "all_frames": true
, ale to nie działa.
Prosimy o radę. Dzięki.
Edit: dodałem example.com do atrybutu jak to matches
:
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*",
"http://*.example.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
Ale to nie działa.
Aby być jaśniejsze, powiedzmy zawartość iframe (example.com) wynosi:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Nie będzie błąd: $ nie jest zdefiniowana
Aby działać, muszę używać:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Czy możesz pokazać swój pełny manifest za pomocą zestawu 'all_frames' i kodu skryptu treści, który tworzy element iframe? – serg
Ok, edytowałem pytanie. – Betty
Hej Betty, teraz, gdy Serg rozwiązał początkowy problem, spójrz na to pytanie podczas oczekiwania na załadowanie ramki, aby uzyskać do niej dostęp: http: // stackoverflow.com/questions/4669089/how-to-inject-an-iframe-panel-to-a-google-chrome-extension-and-add-click-event-in- – Darin