是否有人成功使用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文件......
<script type="text/javascript" src="StageWebViewBridge.js"></script>
当我测试电影时,我得到正确的设置输出信息
_serializeObject =>___onDomReady
_serializeObject =>___getFilePaths
_serializeObject =>___onDeviceReady
_serializeObject =>fnCalledFromJS
并且html页面出现在视口中。但是在按下应该向Actionscript发送消息的按钮时,我收到以下错误消息:
TypeError:错误#1009:无法访问空对象引用的属性或方法。 在es.xperiments.media::StageWebViewBridgeExternal/parseCallBack()[/Users/G5TowerIntel/Desktop/maptest/es/xperiments/media/StageWebViewBridgeExternal.as:88] 在es.xperiments.media::StageWebViewBridge/onLocationChange() [/ Users / G5TowerIntel / Desktop / maptest / es / xperiments / media / StageWebViewBridge.as:236]
我的目标是从html页面向ActionScript发回消息。
谢谢,
标记
答案 0 :(得分:2)
你的代码中有些问题......
在as3和js之间进行任何通信之前你必须先听DEVICER_READY事件,反之亦然......
// 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( '应用链接:/ExampleBasic.html');
到
view.loadURL(的 'http://localhost/ExampleBasic.html');
然后在服务器html文件中添加引用.js文件的行
它必须有效......
说我......
答案 1 :(得分:0)
成功!这是我用过的AS3 ......
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文件,如此...
<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>
...