我正在制作一个Chrome扩展名,该扩展可以访问网页上的视频元素。这是iframe和儿童视频元素。尝试使用使用IFRAME DOM的访问时(这是在页面上运行的内容脚本中):
function GetIframeDocument(){
var iframe = document.getElementById("vilos-player");
var doc = iframe.contentWindow.document;
var videoElement = doc.getElementByid("player_html5_api");
}
我得到错误:
Uncaught DOMException: Blocked a frame with origin "https://www.crunchyroll.com" from accessing a cross-origin frame.
at <anonymous>:1:21
但是,如果我进入Chrome Developer工具并将视频元素变成全局变量(像这样)。然后,我可以将JavaScript应用于控制台中的元素,而无需遇到交叉框架错误(如下所示)。
如何在不遇到错误的情况下访问脚本中的视频元素?如果我可以在控制台中访问它,并且可以在开发人员工具中的页面元素中看到。
我不知道您需要做什么,但显然可以获取视频的链接。建议您使用Chrome Extension注入JavaScript。在创建扩展过程中,设置参数
all_frames = true
https://developer.chrome.com/extensions/content_scripts
那么您的代码也将在所有页面上,也将在iframe上。
我们可以在文档中阅读
HTML内联帧元素()表示嵌套的浏览上下文,将另一个HTML页面嵌入当前一个。
因此,iframe元素具有自己的窗口对象,对于访问,您可以使用预定义的方法 contentWindow()。
请参阅方法描述和W3Schools示例。