Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何管理程序运行时重新调度的Adobe AIR InvokeeEvent事件?_Javascript_Html_Air - Fatal编程技术网

Javascript 如何管理程序运行时重新调度的Adobe AIR InvokeeEvent事件?

Javascript 如何管理程序运行时重新调度的Adobe AIR InvokeeEvent事件?,javascript,html,air,Javascript,Html,Air,我正在尝试建立一个基于HTML的AIR应用程序,允许用户保存(并最终共享)指向并启动计算机上文件的“书签”。我的全部目标用户将使用标准的、公司发行的笔记本电脑,这些笔记本电脑将预加载一组HTML文件,我的应用程序设计用于打开这些文件。所有的笔记本电脑在相同的位置都有相同的文件,这稍微简化了问题 我的应用程序由2个HTML页面组成,用户可以在其中导航:home.HTML和page.HTML。Home.html是登录页,上面只有几个按钮。home.html上的每个按钮将窗口导航到page.html,

我正在尝试建立一个基于HTML的AIR应用程序,允许用户保存(并最终共享)指向并启动计算机上文件的“书签”。我的全部目标用户将使用标准的、公司发行的笔记本电脑,这些笔记本电脑将预加载一组HTML文件,我的应用程序设计用于打开这些文件。所有的笔记本电脑在相同的位置都有相同的文件,这稍微简化了问题

我的应用程序由2个HTML页面组成,用户可以在其中导航:home.HTML和page.HTML。Home.html是登录页,上面只有几个按钮。home.html上的每个按钮将窗口导航到page.html,并传递一个pageId参数。html使用pageId参数决定从本地存储的JSON文件中解析出哪个节点

我的目标是配置我的InvokeEvent事件侦听器,以便从存储在自定义文件类型中的参数启动本地存储的HTML文件。目前,文件类型称为.eref,它们只是简单的文本文件,包含要启动的单个HTML页面的路径。例如,test.eref包含一行:file:///C:/test.html“

我有一个脚本,erefHandler.js,包含在home.html和page.html中。erefHandler.js如下所示:

if (air != undefined) {
    air.NativeApplication.nativeApplication.addEventListener(air.InvokeEvent.INVOKE, onInvoke);
}

function onInvoke(e) {
    if( e.arguments.length == 1 ) {
        var file = new air.File(e.arguments);
        if(file.exists) {
            var fileStream = new air.FileStream();
            var byteData = new air.ByteArray();
            fileStream.open(file, air.FileMode.READ);
            fileStream.readBytes(byteData, 0, file.size);
            fileStream.close();

            if(byteData.length > 0) {
                var s = byteData.readUTFBytes(byteData.length);
                var parser=new DOMParser();
                var doc=parser.parseFromString(s,"text/plain");

                window.open(s, '_blank', 'width=910, height=700, menubar=no, toolbar=no, resizable=yes');

            }
        }
    }
}
当您第一次双击test.eref时,这非常有效。我的问题是test.eref触发的InvokeeEvents在每次调度任何InvokeeEvent时都会重新调度。这似乎在用户在home.html和page.html之间导航时发生,因为file:///C:/test.html 重新启动。换句话说,双击test.eref启动我的应用程序并启动file:///C:/test.html,但当从home.html导航到page.html时,应用程序将启动的第二个实例file:///C:/test.html (导航回home.html会启动第三个实例,依此类推……)

有人能帮我找出如何管理/消除这些重新调度的事件吗

提前谢谢你


-只要用户启动应用程序且应用程序当前未打开,就会触发Zach

调用
。通过此操作的唯一方法是根据传递的参数/FlashVar隐藏AIR文件。希望这有帮助