AS2.0中flash调用页面中的js方法及注意事项

2019-03-28381次阅读flash

项目需求:点击flash动画调用页面中的JS方法,AS不会,想想语言基本上相通的,就试试搞了一下,这里做一下总结记录。

flash给按钮或影片添加如下代码:

on (press) {
    getURL("javascript:gotoAndPla()");
}
  • AS2.0事件处理:on(press)鼠标按下、on(release)鼠标释放;
  • getURL("http://www.xinran001.com","_blank")跳转至某个超链接,getURL("javascript:gotoAndPla()");调用页面js的gotoAndPla方法。

信心满满复制flash到网页环境下试一下,结果现代浏览器都不起作用包括Edge,但IE10及以下都可以使用。第一反应就想到了插入的flash代码上可能少了哪个属性:

先看看页面中插入的flash代码长啥样:

<object height="800px" width="100%" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0">
    <param value="index.swf" name="movie">
    <param value="high" name="quality">
    <param value="transparent" name="wmode">
    <param value="always" name="allowScriptAccess"> 
    <embed height="800px" allowScriptAccess="always" width="100%" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" quality="high" src="index.swf">
</object>

IE10及以下选中flash,标记代码是在object标签上的:

现代浏览器包括Edge选中flash,标记代码是在embed标签上的:

一对比,问题找到了,embed上少了allowScriptAccess属性:

<embed height="850px" width="100%" allowScriptAccess="always" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" quality="high" src="index.swf">

allowScriptAccess可能存在如下值:

  • always: 始终允许ActionScript相互调用JavaScript。无论这个flash是同一个域加载的flash,还是跨域加载的flash。
  • sameDomain: 仅当 SWF 和 HTML 页来自同一域时, 才允许 ActionScript 和 JavaScript相互调用。
  • never: 绝对不允许 ActionScript 和 JavaScript 相互调用,无论这个flash是本地域加载还是跨域加载的。
上一篇: 聊聊禁止input回车提交表单  下一篇: iOS内购掉单问题处理方法  

AS2.0中flash调用页面中的js方法及注意事项相关文章