Я подозреваю, что Chrome внедрит ваши скрипты контента в IFRAME, который является частью исходного источника страницы, как в случае с примером reddit.com - IFRAME являются частью исходной страницы, поэтому Chrome может и будет внедрять в них,Для ссылки html5video IFRAME не является частью исходного источника.Однако, если вы осмотрите элементы, вы увидите IFRAME, который подсказывает мне, что IFRAME был динамически загружен в DOM.Я вижу то же поведение с написанным мною расширением, поэтому оно выглядит непротиворечивым.
Если вам нужно внедрить в IFRAME, то, возможно, вы можете подключить событие создания DOM и выполнить требуемое действие:
document.addEventListener('DOMNodeInserted', onNodeInserted, false);
ОБНОВЛЕНИЕ:
Как насчет этого для http://html5video.org/ - используя следующий код content_script, я могу получить IFRAME, а затем тег VIDEO.Примечание: этот подход / концепция также должен работать очень хорошо для 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