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

How to access the contents of an iframe in 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>

所以事实证明我可以访问 iframe 的内容,就像在 nw.js 中一样,我只是在我的原始代码中做错了。

问题出在 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>

P.S. 建议在加载不安全内容(如外部站点)时使用 nwdisablenwfaketop 属性iframenw.js.

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

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

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