我只是想从某个站点提取图像(不一定是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;
}
答案 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>');
其中ifr
是iframe
窗口的名称或ID。
请注意一下跨域问题。