桌面应用程序中的 HTML 加载带有 iframe 的页面
Posted
技术标签:
【中文标题】桌面应用程序中的 HTML 加载带有 iframe 的页面【英文标题】:HTML in desktop application load a page with an iframe 【发布时间】:2011-12-23 13:10:30 【问题描述】:我在 AIR 桌面应用程序中有一个 mx:html 组件,该组件将外部网页加载到其中...
此网页中有一个 iframe,并且 iframe 加载(显然)另一个页面...
我不知道如何获取 iframe 的代码...
如果我尝试获取网页内容,我只会检索起始页,例如:
文件webpage.html
<html>
<!-- html code-->
<iframe src="http://host/framepage.html">content default</iframe>
<!-- other html code-->
</html>
文件framepage.html
<div>test test test</div>
我想得到字符串<div>test test test</div>
请告诉我有一种方法可以获取 iframe 的内容(无需重新加载)...
编辑
查看Exort的回复,使用
var iFrame:* = domWindow.document.getElementById("myIframe");
将返回 iframe,但内容不是我想要的... 使用上面我的网页和 framepage 示例,我将获得的 iframe 内容是
content default
而不是
<div>test test test</div>
就像第二个页面没有加载,但它实际上是在浏览器窗口中加载和呈现的(我也尝试使用一个按钮,这样我可以延迟搜索 iframe 内容。
【问题讨论】:
iframe 是否与父项目位于完全相同的域中? 这个问题有点像:***.com/questions/785823/… 【参考方案1】:我没有太多时间,所以这可能不是一个真正深入的答案,但 iframe 被认为是在一个窗口中并且有自己的文档。您可以使用类似这样的 html DOM 来获取它的内容。顺便说一下,这是 AS3,如果我使用 '*' 作为对象类型。在这里使用 Object 类型并不能很好地工作。
var domWindow:* = myHTML.htmlLoader.window; //DOM window object
//if you don't have the id, you can get all iframes with getElementsByTagName("iframe")
var iFrame:* = domWindow.document.getElementById("myIframe");
var iFrameContent:String = iframe.contentDocument.body.innerHTML;
【讨论】:
它不起作用,除了最后两行没有给出任何结果,还得到iframe
我无法检索数据......相反我可以得到“第一页上的 iframe 的文本”。我编辑了我的帖子以更好地澄清。
不幸的是,我无法对其进行测试,但解决方案就在于此。尝试在调试中检查 iframe 并查看是否无法获取窗口。从我的脑海中,它是 contentWindow 但它可能是别的东西。稍后我会看看是否可以为您提供更多详细信息,对不起!
NP!我至少整个上午都在调试窗口中查看,没有发现任何有用的东西,所以我在这里问..希望有人能提供帮助..
啊!我找到了旧代码,我已经更新了我的解决方案。希望它有效!
看看help.adobe.com/en_US/AIR/1.5/devappshtml/…也许这里有东西以上是关于桌面应用程序中的 HTML 加载带有 iframe 的页面的主要内容,如果未能解决你的问题,请参考以下文章
需要从本地 iframe 中的 src url 中删除页眉和页脚
将 html 内容附加到 Angular JS 中的 iframe