首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StageWebViewBridge加载和与在线页面的通信

StageWebViewBridge加载和与在线页面的通信
EN

Stack Overflow用户
提问于 2011-12-10 01:47:32
回答 2查看 3.2K关注 0票数 1

有没有人成功地使用StageWebViewBridge加载在线网页并与之通信?

http://code.google.com/p/stagewebviewbridge/wiki/Communication

所提供的文档和示例都是围绕使用本地文件进行配置的(这些文件工作得很成功),尽管在加载的html页面中包含StageWebViewBridge.js文件的指令听起来非常直接,但遗憾的是,它似乎并不起作用。

对于任何想要复制我的测试的人,我已经在这里上传了文件:

http://www.infin8design.com/clients/stack/swvb.zip

我基本上是从web服务器加载'ExampleCallBackFuncions.html‘文件。我已经包含了StageWebViewBridge.js文件,如下所示...

代码语言:javascript
复制
<script type="text/javascript" src="StageWebViewBridge.js"></script>

当我测试电影时,我得到了正确的设置输出消息

代码语言:javascript
复制
_serializeObject =>___onDomReady
_serializeObject =>___getFilePaths
_serializeObject =>___onDeviceReady
_serializeObject =>fnCalledFromJS

并且html页面出现在视口中。但是,在按下应该向Actionscript发送消息的按钮时,我得到了以下错误消息:

TypeError:错误#1009:无法访问空对象引用的属性或方法。在es.xperiments.media::StageWebViewBridge/onLocationChange()/Users/G5TowerIntel/Desktop/maptest/es/xperiments/media/StageWebViewBridge.as:236的es.xperiments.media::StageWebViewBridgeExternal/parseCallBack()/Users/G5TowerIntel/Desktop/maptest/es/xperiments/media/StageWebViewBridgeExternal.as:88

我的目标是从html页面向ActionScript发回一条消息。

谢谢,

标记

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-10 06:37:48

你在你的代码中做了一些错误的事情...

在as3和js之间进行任何通信之前,您必须侦听DEVICER_READY事件,反之亦然。

代码语言:javascript
复制
// listen StageWebViewBridgeEvent.DEVICE_READY event to be sure 
// the communication is ok
view.addEventListener(StageWebViewBridgeEvent.DEVICE_READY, onDeviceReady );

// add a callback method for the function we like to call from Javascript
view.addCallback('fnCalledFromJS', fnCalledFromJS );

// load the localfile demo.html ( inside the www dir )
view.loadLocalURL('http://www.someserver.com/ExampleBasic.html');

您可以使用我的ExampleBasic并使用以下命令更改行:

view.loadLocalURL('applink:/ExampleBasic.html');

view.loadURL('http://localhost/ExampleBasic.html');

然后,在服务器html文件中添加引用.js文件的行

它必须起作用..。

告诉我..。

票数 2
EN

Stack Overflow用户

发布于 2011-12-10 08:11:01

成功!这是我用过的AS3。

代码语言:javascript
复制
public var webView1:StageWebViewBridge;

public function Main() {            
StageWebViewDisk.addEventListener(StageWebviewDiskEvent.END_DISK_PARSING, onInit );
StageWebViewDisk.setDebugMode( true );
StageWebViewDisk.initialize(stage);
}

function onInit( e:StageWebviewDiskEvent ):void {
trace("onInit");
webView1 = new StageWebViewBridge(60, 60, 400, 262);
webView1.addEventListener(StageWebViewBridgeEvent.DEVICE_READY, onDeviceReady );
webView1.loadURL("http://www.domain.com/ExampleCallBackFuncions.html");
}

function onDeviceReady( e:StageWebViewBridgeEvent ):void {
trace("onDeviceReady"); 
webView1.addCallback('fnCalledFromJS', fnCalledFromJS );
addChild(webView1);

}

并且示例ExampleCallBackFuncions.html文件被修改为包括StageWebViewBridge.js文件,如下所示...

代码语言:javascript
复制
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>example</title>
<script type="text/javascript" src="StageWebViewBridge.js"></script>
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8449596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档