如果不先使用开发人员工具选择它,就无法访问iframe dom元素



我正在制作一个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示例。

最新更新