Javascript:无法访问iframe文档

时间:2018-07-08 09:18:39

标签: javascript iframe

我只是想从某个站点提取图像(不一定是Bing,但问题似乎出在每个站点上)。
运行此代码,似乎在'if'语句上失败了。这使我认为没有文档。
我一直试图找出为什么这行不通,但是由于我有限的HTML / Javascript知识,我只是行不通。有人可以启发我。

我通常不需要这么多的变量,但是为了找出问题,我编写了这段代码。我也尝试过window.frames [0] .document,但没有运气。

HTML:
    <iframe id="test" src="https://www.bing.com/images/search?q=test"></iframe> <button onclick="myFunciton()">Go</button>

Javascript:

function myFunction() {
var x = document.getElementById("test");
var y = (x.contentWindow || x.contentDocument);
if (y.document){y = y.document;}
var test = y.getElementsByTagName("img")[0].src;
}

2 个答案:

答案 0 :(得分:0)

问题不在于您的if语句。对我来说,您的代码给了我一个错误:

SecurityError: Blocked a frame with origin "https://www.example.com" from accessing a frame with origin "https://www.bing.com". Protocols, domains, and ports must match. 

这意味着您根本无法访问具有不同来源的iframe,否则将是一个巨大的安全问题。在iframes之间进行交互的唯一方法是使用window.postMessage,您可以在另一个post on StackOverflow.

中进行了解。

答案 1 :(得分:0)

您应该可以使用以下内容访问iframe内容:

parent.ifr.document.getElementById('<some id>');

其中ifriframe窗口的名称或ID。

请注意一下跨域问题。