如何在nw.js中访问iframe的内容?

时间:2016-06-07 09:17:25

标签: javascript html iframe nw.js

我需要在 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>

2 个答案:

答案 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时使用nwfaketopiframe属性的.js

<iframe src="http://google.com" width="800" height="600" nwdisable nwfaketop></iframe>

答案 1 :(得分:0)

要获取URL的整个文档,您可以在加载后使用此方法:

var Content=(new XMLSerializer()).serializeToString(iframeID.contentDocument);