Php 获取通过ajax加载的iframe的HTML(请注意,iframe包含需要加载javascript的网页)
是否可以从我使用jquery通过ajax调用加载iframe的页面获取iframe的HTML(请注意,iframe指的是通过ajax调用加载的网页?Php 获取通过ajax加载的iframe的HTML(请注意,iframe包含需要加载javascript的网页),php,javascript,jquery,ajax,iframe,Php,Javascript,Jquery,Ajax,Iframe,是否可以从我使用jquery通过ajax调用加载iframe的页面获取iframe的HTML(请注意,iframe指的是通过ajax调用加载的网页? 事实上,我想放弃这篇文章的内容。 问题是这个网站是通过ajax加载的。因此,我不能使用curl获取需要加载javascript的网页内容 为了解决这个问题,我使用ajax从index.php调用了一个php文件,并将我的query q=blog传递到将这个iframe返回index.php的php页面 <iframe id="myframe"
事实上,我想放弃这篇文章的内容。 问题是这个网站是通过ajax加载的。因此,我不能使用curl获取需要加载javascript的网页内容 为了解决这个问题,我使用ajax从index.php调用了一个php文件,并将我的query q=blog传递到将这个iframe返回index.php的php页面
<iframe id="myframe" src="https://blekko.com/#?q=blog" width="100%" height="100%"></iframe>
<div id="myhtml" style="display:none"></div>
在成功的ajax响应之后,我保存了ajax的响应,这是一个
iframe与查询一起引用网站
在index.php的div中
<iframe id="myframe" src="https://blekko.com/#?q=blog" width="100%" height="100%"></iframe>
<div id="myhtml" style="display:none"></div>
3到6秒后,在index.php的iframe中加载此内容
我在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>
var newInt=setInterval(函数(){check();},5000);
函数检查(){
blekko_html=$(“#myframe”).contents().find(“html”).html();
警报(blekko_html);
}
但每次调用check()函数时,它都会返回/提醒
<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页面,如果我可以进行抓取和获取所需数据。可能会将onload添加到iframe并在那里进行检查 像
我将修改check()
以执行console.log(blekko_html)
而不是警报
然后在Chrome或Firebug或IE F12中的开发者控制台中进行检查,您试图访问指向另一个域的网页的iframe内容 如果iframe的src未指向当前父页面所在的域,则无法访问该iframe的内容。这称为跨域策略 您必须使用服务器端语言来获取给定url的html,并将其返回到您的索引页面,以显示在任何div或其他任何内容中 让我举一个例子来解释为什么javascript不能进行跨域访问
- 假设我在iframe中的网站上有一个类似FB的框
- 现在,每当有任何用户访问我的网站,我都会触发一次点击 like box的iframe内的like box
- 这样,我的FB页面将有成千上万的喜欢
- 但由于跨域策略,这无法完成
希望您理解我的观点您需要确保首先加载iframe内容
function check(){
$("#myframe").load(function(){
blekko_html = $("#myframe").contents().find("html").html();
alert(blekko_html);
});
}
@斯蒂普实际上不是。我的问题是不同的…我们可以使用jquery获取iframe的内容…但是如何获取通过ajax调用的iframe的内容,以及在ajax响应几秒钟后加载iframe内的网页…因为框架内的内容是通过ajax加载的。我尝试过这一点,并从控制台收到以下消息错误:权限被拒绝要访问属性“文档”源文件:行:3。。。知道如何获得访问权限吗?你是对的…这就是为什么我在控制台中得到这个错误,拒绝访问属性“document”源文件:code.jquery.com/jquery-1.7.2.min.js?\u=1377911359134行:3。我的首要任务是使用服务器端语言,比如php来获取html…但是我需要废弃的网页并获取它的html是通过ajax加载的,而所有服务器端方法(比如CURL)都不支持javascript。。。