是否可以通过使用jquery的ajax调用从我正在加载它的页面获取iframe的HTML(请注意iframe引用通过ajax调用加载的网页)?
Actualy我想废弃这个website的内容。
问题是这个网站是通过ajax加载的。所以我不能使用curl来获取需要加载javascript的网页内容。
对于这个问题的解决方案,我使用index.php中的ajax调用一个php文件,并将我的查询 q = blog 传递给将iframe返回到index.php的php页面
<iframe id="myframe" src="https://blekko.com/#?q=blog" width="100%" height="100%"></iframe>
成功的ajax响应后,我正在保存ajax的响应 iframe引用网站以及查询 在index.php的div中
<div id="myhtml" style="display:none"></div>
在index.php的iframe中加载此website的内容后3到6秒 我在index.php中有一个jquery函数,它在间隔5秒后检查div id“myhtml”的html
<javascript>
var newInt = setInterval(function(){ check(); }, 5000);
function check(){
blekko_html = $("#myframe").contents().find("html").html();
alert(blekko_html);
}
</javascript>
但是每次check()函数调用时,都会返回/ alert this
<iframe id="myframe" src="https://blekko.com/#?q=blog" width="100%" height="100%"></iframe>
即使iframe加载了网页的内容,它也总是在iframe的html初始化之上返回,而不是其中的网页的html。
是否可以获取通过ajax调用加载的iframe的html,并且iframe包含通过ajax调用加载的网页?
如果我能够获得iframe的html,那么我将使用ajax将其再次发送到php页面,我可以抓取并获取所需的数据。
答案 0 :(得分:2)
您正在尝试访问指向其他域名网页的iframe内容。
如果该iframe的src未指向您当前父网页所在的域,则无法访问iframe的内容。这称为跨域政策
您必须使用服务器端语言来获取给定网址的html并将其返回到索引页面以显示在任何div或其他任何内容中。
让我举个例子来解释为什么javascript无法进行跨域访问。
希望你明白我的观点
答案 1 :(得分:1)
您需要确保首先加载iframe内容
function check(){
$("#myframe").load(function(){
blekko_html = $("#myframe").contents().find("html").html();
alert(blekko_html);
});
}
答案 2 :(得分:0)
可能会将ifload添加到iframe并检查
像
<iframe id="myframe" src="https://blekko.com/#?q=blog" width="100%" height="100%" onload="check();"></iframe>
我会修改check()
做console.log(blekko_html)
而不是alert
,
然后在Chrome或Firebug或IE F12中查看开发者控制台