从Windows 7小工具中嵌入的Iframe中访问父DOM /函数
我有以下问题,我创建一个Windows 7小工具,它使用Iframe加载内容。我完全控制Iframe的内容,我想做的是,在父级调用一个函数(Windows 7小工具html文档),从这个iframe中,或者甚至在iframe中触发弹出窗口,当有hover在链接或某物上时。
任何帮助是极大的赞赏。
谢谢
虽然最初声称Windows桌面小工具被排除在同源策略的限制之外,但仅适用于XMLHttpRequests。 如果指向www上的页面,则会阻止框架页面和托管小工具之间的任何通信。 如果是这种情况,那么您可以使用依赖于更改最顶层窗口的
hash
的跨域通信方法。 从框架内部,你会做这样的事情:
window.top.location.hash = "#ShowFlyout";
然后,在小工具的代码中,您将拥有以下内容:
window.setInterval(function () { if (window.location.hash == "#ShowFlyout") { window.location.hash = ""; System.Gadget.Flyout.file = "flyout.htm"; System.Gadget.Flyout.show = true; } }, 100);
我现在没有自己的Windows机器来测试它,但你可以尝试一下。
如果iframe指向本地机器上的html文档,那么您应该能够作为最顶层窗口对象(即小工具)的成员访问全局System
变量,如下所示:
var System = window.top.System; System.Gadget.Flyout.file = "some.htm"; System.Gadget.Flyout.show = true;
或者,假设您可以控制弹出窗口的内容,您可以使用jQuery在所有链接上设置事件处理程序(因为您标记了它):
$("a", iframe.contentWindow.document).click(function () { System.Gadget.Flyout.file = this.href; System.Gadget.Flyout.show = true; });