我需要在 nw.js 中捕获iframe的内容。该页面位于不同的域中。我试图正常访问它(myIframe.document
),但我得到一个空的html文档(可能是某种形式的跨域安全性或其他形式)。然而,我可以从控制台访问iframe的内容,我猜测有一些设置我不知道,这将允许我直接从我的代码执行相同操作。我不需要iframe才能访问 nw.js (出于安全考虑,如果不可能,它会更好)。
<iframe src="http://google.com" width="800" height="600" id="myIframe"></iframe>
<script>
$(function()
{
// Making sure it's actually loaded with help of jquery
$('#myIframe').ready(function () {
console.log(window.frames[0].document);
// Returns:
// <html>
// <head></head>
// <body></body>
// </html>
});
});
</script>
答案 0 :(得分:2)
事实证明我可以像 nw.js 中那样访问iframe的内容,而我在原始代码中做错了。
问题是使用jquery ready
。当我在触发ready
时尝试访问iframe时,我得到了一个空文档,但是当我从iframe的onload
回调中做同样的事情时,我实际上得到了所有内容。
<iframe src="http://google.com" width="800" height="600" id="myIframe" onload="loaded()"></iframe>
<script>
function loaded()
{
console.log(window.frames[0].document);
// Returns the actual page
}
</script>
PS 建议在将不安全内容(例如外部网站)加载到 nw中的nwdisable
时使用nwfaketop
和iframe
属性的.js 强>
<iframe src="http://google.com" width="800" height="600" nwdisable nwfaketop></iframe>
答案 1 :(得分:0)
要获取URL的整个文档,您可以在加载后使用此方法:
var Content=(new XMLSerializer()).serializeToString(iframeID.contentDocument);