我有以下问题,我正在创建一个Windows 7小工具,它使用Iframe加载内容。我可以完全控制Iframe的内容,我想要做的是,在父级中调用一个函数(Windows 7来自此iframe的小工具html文档),甚至可以在iframe中触发弹出按钮,当链接悬停在某个链接上时。
非常感谢任何帮助
由于
答案 0 :(得分:2)
尽管最初声称Windows桌面小工具被排除在Same Origin Policy的限制之外,但仅适用于XMLHttpRequests。如果<iframe>
指向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
变量,如下所示: / p>
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;
});