Flash与页面交互的钥匙之AllowScriptAccess转载 转载dan的博客帅哥

今天为一个flash的问题搞了半天,flash在页面中点不开js的提示框,如果单是这一个问题,那我立刻就能确定问题所在,一定是allowScriptAccess这个属性有问题,可是同时还存在另一个问题,我的flash中的链接换成_self或_parent就没反应了,我随即将解决问题的焦点放在了flash上,找了半天,也没发现什么异常,最后抱着先解决js交互的问题的想法改了allowScriptAccess,谁知链接的问题也被修复了,我开始思考,为什么呢?于是找到这个属性的手册,原来问题出在Target属性上。

先说这个属性的一般特性。

比如:

value参数说明:
 always 允许随时执行脚本操作。
 never 禁止所有脚本执行操作。
 samedomain 只有在 Flash 应用程式来自和 HTML 页相同的域时才允许执行脚本操作。
 所有 HTML 发布模板使用的默认值均为 samedomain。


  使用 allowscriptaccess 使 Flash 应用程式可和其所在的 HTML 页通信。此参数是必需的,因为fscommand()、getURL()、ExternalInterface.call(),甚至navigateToURL()都可能导致JavaScript 使用 HTML 页的权限,而该权限可能和 Flash应用程式的权限不同。这和跨域安全性有着重要关系。


  也就是说如果swf在A.rangerch.com下,不过页面在B.rangerch.com下,想用getURL或fscommand调用页面中的js是不能的,除非你将value设置为always。特别是navigateToURL和getURL,当它们的第二个参数不是_blank时(_self,_parent,_top),也被定义了与js交互一样的安全限制,即也需要设置allowScriptAccess!
Flash与页面交互的钥匙之AllowScriptAccess(转载) 转载dan的博客帅哥

这下搞清楚了,想一下,其实Adobe的工程师们这么做也是有道理的。

下面是Flash文档中的解释,已经很详细了:


ActionScript 3.0 编程


Flash Player 安全性 > 控制对主机网页中脚本的访问






控制对主机网页中脚本的访问
通过使用以下 ActionScript 3.0 API 可实现外出脚本访问:

•flash.system.fscommand() 函数
•flash.net.navigateToURL() 函数(当指定 navigateToURL("javascript:alert('Hello from Flash Player.')" 等脚本访问语句时)
•flash.net.navigateToURL() 函数(当 window参数设置为"_top"、"_self"或"_parent"时)
•ExternalInterface.call() 方法
对于本地运行的 SWF 文件,仅当 SWF文件和包含该文件的网页(如果存在)位于受信任的本地安全沙箱中时,才能成功调用这些方法。如果内容位于只能与远程内容交互的沙箱或只能与本地文件系统内容交互的沙箱中,则对这些方法的调用将失败。

HTML 代码中用于加载文件的 AllowScriptAccess 参数控制能否从 SWF 文件内执行外出脚本访问。

在 HTML 代码中为承载 SWF 文件的网页设置此参数。可以在 PARAM 或 EMBED 标签中进行设置。

AllowScriptAccess 参数可以有 "always"、"sameDomain" 和 "never"这三个可能值中的一个:

•当 AllowScriptAccess 为"sameDomain"时,仅当 SWF文件和网页位于同一域中时才允许执行外出脚本访问。这是 AVM2 内容的默认值。
•当 AllowScriptAccess 为"never"时,外出脚本访问将始终失败。
•当 AllowScriptAccess 为"always"时,外出脚本访问将始终成功。
如果未在 HTML 页面中为 SWF 文件指定 AllowScriptAccess 参数,则默认为 AVM2内容的"sameDomain"。

下面是一个在 HTML 页面中设置 AllowScriptAccess 标签的示例:
Java代码
  1. 'MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'height='100%' width='100%'>
  2. 'AllowScriptAccess' value='never'/>
  3. 'src'value=''MyMovie.swf'/>
  4. 'MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer'src='MyMovie.swf'height='100%' width='100%' AllowScriptAccess='never'/>

AllowScriptAccess 参数可以防止从一个域中承载的 SWF 文件访问来自另一个域的 HTML页面中的脚本。对从另一个域承载的所有 SWF 文件使用 可以确保位于 HTML 页面中的脚本的安全性。

有关详细信息,请参阅《ActionScript 3.0 语言和组件参考》 中的以下条目:

•flash.system.fscommand() 函数
•flash.net.navigateToURL() 函数
•ExternalInterface 类的 call() 方法

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/RangerCH/archive/2009/09/01/4507925.aspx

内部js调用的方法:varparams={wmode:"transparent",AllowScriptAccess:"always"};
swfobject.embedSWF("/static/resource/flashblog4.swf","swof","280","250","9.0.0",false,null,params,null);

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/96394.html

更多阅读

转载 我的老师 转载dan的博客帅哥

优秀博文集录1。风格:温文而婉,寓深与浅,寓重与轻。原文地址:我的老师作者:卢望军我是一个老师,而且是一个教了十五年书的语文老师,我被无数正在教着的学生在我当面批阅的情况下写过,也许也被一些已经教过的学生在我不知情的情况下写过。有

转载 那尼亚传奇,好大一个梦 转载dan的博客帅哥

原文地址:那尼亚传奇,好大一个梦作者:磨盘 在一种比较混沌的状态下,看完了最近很火热的那尼亚传奇,看完了还是晕晕乎乎的。 那尼亚传奇就是一个梦,一个孩子的神话梦,我最近智力和脑力明显出现了问题,以至于看了孩子的梦都有理解的不怎么清晰

帝师问答歌转载 转载dan的博客帅哥

帝师问答歌(烧饼歌)明刘基撰据传,1860年,英法联军攻入北京,火烧圆明园时,一联军士兵从掠来的珍宝典籍中发现一册珍藏本,内容包括中国历代先贤的预言,其中一篇就是(帝师问答歌)。这位士兵将此书赠送给一位女士,后来经女士之手又传到一位名叫曼根

转载 隔行如隔山 转载dan的博客帅哥

原文地址:隔行如隔山作者:终南下蓝溪边念佛人隔行如隔山俗云:“隔行如隔山”,打铁的人听见一群木匠谈论木工手艺定是一脸茫然。世事如此,佛法何独不然?修学圣道门之人听见净土门,特别是善导大师开阐的弘愿门,一定是惊愕、诧异、不解。但他

声明:《Flash与页面交互的钥匙之AllowScriptAccess转载 转载dan的博客帅哥》为网友诗情诗意湿人心分享!如侵犯到您的合法权益请联系我们删除