我在使用Adobe Air时遇到了一些问题。我的应用程序具有相当复杂的架构:主html窗口加载iframe并引用javascripts(例如DWRengine.js,jquery.js,main.js等)。这样做是为了避免Air对'eval'函数的javascript限制,这在我的脚本和DWR中也被广泛使用。
在main.js文件中,我试图将事件监听器添加到主窗口的按钮和链接。
像这样:
$(document).ready(function(){
$('body', top.document).click(function(){alert('a');});
});
但是没有效果! top.document
未定义。
我无法在加载主页时将操作绑定到事件,因为包含它们的对象仅在主页onload
事件之后加载。
请帮帮我!
先谢谢你,迈克。
答案 0 :(得分:1)
您正在使用两个不同的沙箱,因此您需要设置沙箱桥。
在您的情况下,您必须使用parentSandboxBridge在应用程序沙箱中的方法中公开
here are the docs in case you don't have them
所以在顶部窗口
// quoting from the docs
var interface = {};
interface.save = function(text){
var saveFile = air.File("app-storage:/save.txt");
//write text to file
}
document.getElementById("yourIframe").contentWindow.parentSandboxBridge = interface;
当然,这不会使您的图书馆在父母中可用,但您可以在孩子中处理并使用父母来做空气