使用JavaScript获取IFrame innerHTML
|
我正在尝试使用以下代码获取IFrame内部HTML。
<iframe src=\"http://www.msn.com\"
width=\"100%\" height=\"100%\" marginwidth=\"0\"
scrolling=\"no\" frameborder=\"0\" id=\"divInfo\"
onreadystatechange=\"MyFunction(this);\"></iframe>
JavaScript代码是
function MyFunction(frameObj)
{
if (frameObj.readyState == \"complete\")
{
alert(frameObj.document.body.innerHTML);
}
}
但是警报显示了当前文档的html。 frmae ready状态完成后,如何获取iframe的内部HTML。
如果我使用alert(frameObj.contentWindow.document.body.innerHTML);
,则会显示拒绝访问错误。
提前致谢。
没有找到相关结果
已邀请:
4 个回复
枫湃揩乾纲
醒荒捆府绣
...并且您还可以使用onload代替onreadystatechange ...
厘恼轨
完趣镐
的来源不是同一来源,您将无法获取它的内容。 这也适用于获取外部内容的大多数其他方式,例如使用ajax从另一个页面加载源代码。即:
要加载外部内容,该内容必须符合相同的原始政策。 这意味着内容必须在相同的协议和主机上。 上面链接的维基百科文章: httpː// www.example.com / dir / page2.html->成功相同的协议和主机 httpː// www.example.com / dir2 / other.html->成功相同的协议和主机 httpː//用户名:password@www.example.com/dir2/other.html->成功相同的协议和主机 httpː// www.example.com:81 / dir / other.html->失败协议和主机相同,但端口不同 https://www.example.com/dir/other.html->故障不同协议 http://en.example.com/dir/other.html->故障不同的主机 http://example.com/dir/other.html->故障不同的主机(需要完全匹配) http://v2.www.example.com/dir/other.html->故障不同的主机(需要完全匹配) 简而言之,它必须在同一网站上。因此,虽然
可以加载
的内容,但不能加载
的内容 另外,它必须在同一域中。子域被视为VOID相同的域策略,因此虽然
可以加载
的内容,但它不能加载
的内容 当然,照常有一些解决方法,但这是另一个故事。实际上,这与问题非常相关。因此,在绕过它的所有方法上都有一个很好的问题“线程”。