1

我正在 Flash AS3 (AIR 2) 上开发桌面应用程序。我正在使用 HTMLLoader 从我的服务器填充 html 内容,在 HTML 内容上有一个单独的输入字段和一个按钮,用户可以在其中输入电子邮件,当按下提交时(使用 html 表单)然后应用程序内容更改为带有缩小的一周日历的欢迎屏幕,突出显示该用户单独的活动(从数据库中提取)。这个缩小的日历是可点击的,这就是我的冲突所在。

为了使表单按钮正常工作,我必须将 navigateInSystemBrowser 设置为 false,但是当 usr 单击某个日期链接时,我必须将 navigateInSystemBrowser 设置为 true ... 显然我不能让它同时进行这两种操作,或者我可以吗? ...所以我尝试将表单字段元素放在 flash 中以在 var 中发送电子邮件,以便 php 可以处理并发送到缩小的日历,但我无法让它工作。

应该有一个类型或名称之类的标签,您知道 openIn="" 为每个链接或锚点提供在应用程序内部或外部打开的选项,而不是依赖于 navigateInSystemBrowser。

搜索我发现了一些几乎有用的链接。

http://forums.adobe.com/message/3230376

但它没有说明可能的解决方案。

这是我上次发布的代码,希望那里的文字有助于更好地描述我的冲突。感谢您提供的任何帮助。

    import flash.html.*;
    import flash.net.*;

    var cargador:HTMLLoader = new HTMLLoader();
    var url:URLRequest = new URLRequest("myhtmlcontent.php");
    cargador.load(url);

    addChild(cargador);
    cargador.paintsDefaultBackground = false;
    cargador.width = stage.stageWidth - 0;
    cargador.height = stage.stageHeight - 0;
    cargador.cacheResponse = true;
    cargador.navigateInSystemBrowser  = true; //
    cargador.useCache = true;
    cargador.authenticate = false;
    cargador.manageCookies = true;
4

1 回答 1

1

好的,我找到了答案,至少它对我有用,这就是我解决问题的方法。在最初的帖子中,我写道:

应该有一个类型或名称之类的标签,您知道 openIn="" 为每个链接或锚点提供在应用程序内部或外部打开的选项,而不是依赖于 navigateInSystemBrowser。好吧,碰巧有类似的东西,并且在这里http://forums.adobe.com/thread/435864得到了很好的评论

可能有几种方法可以做到这一点。本质上,您需要捕获对链接(或相关事件)的点击,获取目标 URL 并使用 flash.net.navigateToURL() 函数。

它对我有用,这就是我所做的:

在您想在系统浏览器上打开的每个链接上:

<a href="javascript: airBrowseInDefault('https://yourSite.com/yourPage.html');">Blabla</a>

而AS3如下:

import flash.html.*;
import flash.net.*;
var myVar:HTMLLoader = new HTMLLoader();
myVar.addEventListener(Event.HTML_DOM_INITIALIZE, onDomInit);
function onDomInit(event:Event):void { myVar.window.airBrowseInDefault = browseInDefault; }
function browseInDefault(url:String):void { navigateToURL(new URLRequest(url)); }
var url:URLRequest = new      URLRequest("http://yoursite.com/yourpage.php");

myVar.load(url); 
addChild(myVar);
myVar.paintsDefaultBackground = false;
myVar.width = stage.stageWidth - 0;
myVar.height = stage.stageHeight - 0;
myVar.cacheResponse = true;
myVar.useCache = true;
myVar.authenticate = false;
myVar.manageCookies = true;

在这里,我将代码留给那些可能需要类似东西的人。

于 2012-09-25T05:10:24.160 回答