В файле manifest.json я заявляю, что хочу внедрить некоторые сценарии, например:
{
"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
}
]
}
В скрипте содержимого, среди прочего, я создаю iframe. Пока все отлично работает. Как это:
$('<div id="my_notifier"></div>').appendTo($('body')).html('<iframe src="http://example.com"></iframe>');
Проблема в том, что внутри iframe он ничего не наследует от скриптов содержимого. Если я хочу использовать jQuery, я должен использовать <script src=...
, чтобы снова включить его в iframe.
Я предпочитаю не включать jQuery снова, потому что я уже добавил его в расширение. Я не хочу, чтобы пользователь снова и снова загружал jQuery на каждую страницу, на которой необходимо запустить расширение.
Я пробовал атрибут "all_frames": true
, но он не работает.
Пожалуйста, сообщите. Спасибо.
Редактировать: я добавил example.com в атрибут 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
}
]
Но это не работает.
Чтобы быть более понятным, скажите, что содержимое iframe (example.com):
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Будет ошибка: $ не определено
Чтобы это работало, я должен использовать:
<!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>