我正在构建一个基于 HTML 的 AIR 应用程序,为了调用 ActionScript 方法,我在 HTML 应用程序的 URL 上附加了具有特定模式 (#AIRBRIDGE_methodName_arguments) 的哈希标记。使用 window.location = '#AIRBRIDGE_methodName_arguments';在 HTML 应用程序的 JavaScript 中调用 AIR LocationChangeEvent.LOCATION_CHANGING 事件,但是当我尝试访问 StageWebView.location 值时,不会返回哈希。
有人有这方面的经验吗?下面是 ActionScript 代码:
public function LoadHtmlPageByName(pageName:String, stage:Stage):void
{
stage.scaleMode = StageScaleMode.EXACT_FIT;
webView = new StageWebView();
webView.stage = stage;
webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, onLocationChange);
webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
var htmlPath:String = new File(new File("app:/assets/html/" + pageName + "#something").nativePath).url;
webView.loadURL(htmlPath);
}
public function onLocationChange(event:LocationChangeEvent):void
{
trace("you are now at: ", webView.location);
}
代替 #(哈希锚定),对 window.location 使用未知协议。
示例:window.location="unknown:/and_add_here_your_method_info"。
Adobe Air可以通过LocationChangeEvent.LOCATION_CHANGE或LOCATION_CHANGING来捕获它。
iOS 注意事项: 还要听 EventError.Error。 在我使用 Adobe Air 3.4 的情况下,window.location 的值被传递给 EventError.text。 所以也要检查一下。
页面没有重新加载,"位置"不会改变。您可以尝试更改和阅读页面的标题,但我不确定如果不重新加载页面,它是否会更改。