flash与javascript的相互通信的例子
2011年8月24日
没有评论
当前的Web应用中少不了flash,有时候当前页面需要跟flash交互,交互的桥梁是通过javasript来实现,javascript能够调用到flash中定义的方法,同样的flash中也可以调用到javacript的方法。
flash可以用 ExternalInterface.call(“swfCall” [,arg1[,arg2]]) 的方式来调用javacript中定义的swfCall方法,参数为可选;但是javascript中调用flash的方法,需要flash指定那些方法能调用,例如在flash的代码
ExternalInterface。addCallback("setFlashVal", flashFunction); function flashFunction(msg) { //do something } function flashFunction_1(msg) { //do something }
javascript中就可以调用到flashFunction,但调用的方法名是setFlashVal,由于flashFunction_1没有导出,所以页面javascript无法访问到。IE跟Firefox、chrome获取flash对象的方式不同,IE是用window对象,Firefox等则是用document对象。具体参看下面代码:
function getSwfObject(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName] }else{ return document[movieName] } } getSwfObject('swfId').setFlashVal('text');
其中movieName是flash的ID,即<object>标签中定义的ID、或者是embed标签的name属性值,最好这两个值保持一致,否则可能在不同的平台下无法正常工作。