Javascript AIR HTMLLoader window.open不工作

Javascript AIR HTMLLoader window.open不工作,javascript,actionscript-3,air,Javascript,Actionscript 3,Air,我有一个在Flex中开发的web项目,我必须使用AIR使其独立工作 我创建了Air项目,并使用flash.html.HTMLLoader加载了web应用程序。 内容是加载良好和工作 使用javascript函数window.open打开不同链接的按钮很少 链接没有打开。javascript函数是使用ExternalInterface调用的,我在显示的页面中放置了警报 该函数包含简单的window.open window.open("http://www.google.co.in","Google

我有一个在Flex中开发的web项目,我必须使用AIR使其独立工作

我创建了Air项目,并使用flash.html.HTMLLoader加载了web应用程序。 内容是加载良好和工作

使用javascript函数window.open打开不同链接的按钮很少

链接没有打开。javascript函数是使用ExternalInterface调用的,我在显示的页面中放置了警报

该函数包含简单的window.open

window.open("http://www.google.co.in","Google");
我尝试了上面提到的几种解决方案,但都不起作用

http://digitaldumptruck.jotabout.com/?p=672
http://soenkerohde.com/2008/09/air-html-with-_blank-links/
http://cookbooks.adobe.com/index.cfm?event=showdetails&postId=9243
我甚至尝试用window.open方法在HTMLLoader组件中加载一个简单的页面,但它仍然不起作用。单击按钮时,仅警报正在工作,但window.open不会打开链接

<html>
<head>
<title>Test</title>
<body scroll="no">
<input type="button" value="Click" onClick="window.open('http://www.google.co.in');">
</body>
</html>

试验

有人能帮我一下吗

AIR Webkit环境对
window.open方法的支持非常有限。请参阅上的Adobe文档

最简单的方法就是让系统的默认浏览器打开链接,并显示如何从空中弹出打开的url:

var url=”http://www.adobe.com"; 
var urlReq=new air.URLRequest(url);
air.navigateToURL(urlReq);
概括起来:

函数openexternalink(href:String):无效{ var urlReq=new air.URLRequest(href); air.navigateToURL(urlReq); }
一个选项:假设您在页面上运行jQuery,您可以在外部打开所有链接,如下所示:

var html:htmloader=newhtmloader();
var urlReq:URLRequest=newurlrequest(“whatever.html”);
load(urlReq);
html.addEventListener(Event.COMPLETE,
函数completeHandler(事件:event):void{
jQuery('a')。单击(clickHandler);
});
函数clickHandler(e:对象):void{
if(e.target&&e.target.href){
OpenExternalink(e.target.href);
}
e、 预防默认值();
}
有关在ActionScript中处理DOM事件的更多信息,请参阅

这些都没有经过测试,但希望它能给出一个大致的轮廓



否则,如果你想做一些新奇的事情,比如在弹出式空气窗中安装HTMLLoader框架,我确实发现有一篇博客文章在讨论:

这是一个激进的建议,可能有效,也可能无效,但我认为值得一试

覆盖
窗口。打开
方法本身

与前面一样,等待
事件.COMPLETE被触发,然后从那里开始:

var html:htmloader=newhtmloader();
var urlReq:URLRequest=newurlrequest(“whatever.html”);
var oldWindowOpen:对象;//保存它,以防万一
load(urlReq);
html.addEventListener(Event.COMPLETE,
功能(事件:事件):无效{
oldWindowOpen=html.window.open;
html.window.open=asWindowOpen;
});
函数asWindowOpen(href:String,name:String=“\u blank”,specs:Object=null,replace:Object=null):void{
var urlReq=new air.URLRequest(href);
air.navigateToURL(urlReq);
}

您可能应该填写一些函数来处理中指定的其他输入。为了安全起见,您可能必须(或希望)将所有参数类型更改为
Object
,因为与外部接口交互不同,JavaScript ActionScript类型不会在AIR WebKit exchange中自动进行类型转换。

您是否试图使其在新窗口中弹出?您希望它创建新的HTML组件,还是使用本机浏览器启动它?另外,请尝试
窗口。打开('http://google.com“,”u self“
看看这是否是一个安全问题——AIR的HTML组件是一个相当敏感的环境。您好,非常感谢您的回复。问题有点不同,因为window.open调用在javascript文件中。flashswf正在调用打开链接的Javascript函数。本地/远程文件的window.open调用以静默方式失败。我尝试了navigateToURL,它正在工作,但需要在整个应用程序中进行一些更改。对于这个特定的问题有什么解决方案吗。@NitinMukesh-好的,这使问题变得有点复杂,因为听起来好像您没有能力在DOM中搜索使用
window.open
调用的元素。我将发布第二个答案,作为可能的选择。