Я подозреваю, что Chrome вставит ваши сценарии контента в IFRAME, который является частью исходного источника страницы, как в случае с примером reddit.com — IFRAME являются частью исходной страницы, поэтому Chrome может и будет внедрять в них. Для ссылки html5video IFRAME не является частью исходного кода. Однако, если вы проверите элементы, вы увидите IFRAME, который подсказывает мне, что IFRAME был динамически загружен в DOM. Я вижу такое же поведение с расширением, которое я написал, поэтому оно кажется последовательным.
Если вам нужно внедрить в IFRAME, возможно, вы можете перехватить событие создания DOM и выполнить требуемое действие:
document.addEventListener('DOMNodeInserted', onNodeInserted, false);
ОБНОВИТЬ:
Как насчет этого для http://html5video.org/ — используя следующий код content_script, я могу получить IFRAME, а затем тег ВИДЕО. Примечание. Этот подход/концепция также должен хорошо работать и для Reddit.
content_script.js
console.log("content script for: " + document.title);
var timer;
document.addEventListener('DOMNodeInserted', onNodeInserted, false);
function onNodeInserted(e)
{
if(timer) clearTimeout(timer);
timer = setTimeout("doSomething()", 250);
}
function doSomething()
{
$media = $(".mwEmbedKalturaIframe");
console.log($media);
$video = $media.contents().find("video");
console.log($video);
}
manifest.json
{
// Required
"name": "Foo Extension",
"version": "0.0.1",
// Recommended
"description": "A plain text description",
"icons": { "48": "foo.png" },
//"default_locale": "en",
// Pick one (or none)
"browser_action": {
"default_icon": "Foo.png", // optional
"default_title": "Foo Extension" // optional; shown in tooltip
},
"permissions": [ "http://*/", "https://*/", "tabs" ],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["jquery-1.7.1.min.js", "content_script.js" ],
"run_at": "document_idle",
"all_frames": true
}
]
}
См. также: jQuery/JavaScript: доступ к содержимому iframe
person
RidingTheRails
schedule
27.02.2012