获取通过ajax加载的iframe的HTML(请注意,iframe包含一个需要javascript加载的网页)
Get HTML of an iframe loaded via ajax (please note that iframe is containing a webpage that needs javascript to load)
是否可以从我使用jquery通过ajax调用加载的页面中获取iframe的HTML(请注意,iframe指的是通过ajax调用加载的网页)
实际上,我想废弃这个网站的内容。问题是这个网站是通过ajax加载的。因此,我不能使用curl来获取需要加载javascript的网页内容。
为了解决这个问题,我从index.php调用一个带有ajax的php文件,并将我的查询q=blog传递到php页面,该页面将此iframe返回到index.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>
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>
但每次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页面,这样我就可以进行抓取和获取所需的数据。
您正试图访问iframe的内容,该内容指向另一个域的网页。
如果iframe的src没有指向当前父页所在的域,则无法访问该iframe内容。这称为跨域策略
您将不得不使用服务器端语言来获取给定url的html,并将其返回到索引页面,以便在任何div或其他地方显示。
让我举一个例子来解释为什么javascript不能进行跨域访问。
- 假设我的网站上有一个类似FB的盒子,里面有一个iframe
- 现在,每当有用户访问我的网站时,我都会触发点击在相似框的iframe内的相似框
- 这样,我的FB页面将有10万个赞
- 但由于跨领域政策,这是不可能做到的
希望你明白我的意思
您需要确保首先加载iframe内容
function check(){
$("#myframe").load(function(){
blekko_html = $("#myframe").contents().find("html").html();
alert(blekko_html);
});
}
可能会将onload添加到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 中的开发人员控制台中进行检查
- 如何在iFrame中触发iFrame加载
- 在iframe加载后删除类
- BrowserAction.onClicked等待iframe加载
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- Dojo:在 iframe 加载时解析 HTML 内容
- Iframe 加载回调被多次调用
- 阻止iframe加载到移动设备上
- 如何将隐藏/显示事件延迟到提交后Iframe加载
- Iframe加载动画不起作用
- iframe 加载事件中的 setTimeout 似乎没有像预期的那样等待 x 秒
- 强制同步 iframe 加载
- 如何javascript调用iframe加载的文件函数
- 显示微调器,直到 iframe 加载 http post 响应
- 在 KnockoutJS 应用程序中将 AngularJS 应用程序作为 iFrame 加载
- 如何捕获 iframe 加载错误
- 在执行函数之前等待多个 iFrame 加载
- JavaScript 在 Iframe 加载时显示加载 gif
- 如何使 iFrame 在 iframe 加载特定页面时重新加载它所在的页面
- 要随索引页一起加载的滚动更新,并在 iframe 加载来自链接的内容时消失
- 一个页面上有多个 Iframe 加载问题