今天为一个flash的问题搞了半天,flash在页面中点不开js的提示框,如果单是这一个问题,那我立刻就能确定问题所在,一定是allowScriptAccess这个属性有问题,可是同时还存在另一个问题,我的flash中的链接换成_self或_parent就没反应了,我随即将解决问题的焦点放在了flash上,找了半天,也没发现什么异常,最后抱着先解决js交互的问题的想法改了allowScriptAccess,谁知链接的问题也被修复了,我开始思考,为什么呢?于是找到这个属性的手册,原来问题出在Target属性上。
先说这个属性的一般特性。
比如:<param name="allowScriptAccess"value="sameDomain"/>
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!
这下搞清楚了,想一下,其实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 标签的示例:
<object id='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%'>
<param name='AllowScriptAccess' value='never'/>
<param name='src' value=''MyMovie.swf'/>
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/>
</object>
AllowScriptAccess 参数可以防止从一个域中承载的 SWF 文件访问来自另一个域的 HTML 页面中的脚本。对从另一个域承载的所有 SWF 文件使用 AllowScriptAccess="never" 可以确保位于 HTML 页面中的脚本的安全性。
有关详细信息,请参阅《ActionScript 3.0 语言和组件参考》 中的以下条目:
•flash.system.fscommand() 函数
•flash.net.navigateToURL() 函数
•ExternalInterface 类的 call() 方法
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/RangerCH/archive/2009/09/01/4507925.aspx
分享到:
相关推荐
/*如果 Flash 正在播放,就调用 Flash 的 StopPlay() 方法使之停止播放, 否则调用 Flash 的 Play() 方法使之播放*/ with(movie)IsPlaying()?StopPlay():Play() } function Stop(){ movie.StopPlay() //停止...
<embed src="upfile/main.swf" quality="high" bgcolor="#ffffff" width="342" height="38" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage=...
flash音乐动画《千年白狐》,地址...invokeurls="false" quality="high" allowScriptAccess="never" allowNetworking="internal"></P>
92. swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');//IE已经安装Flash插件 93. if(swf) 94. { 95. LoGo.style.display="none"; 96. Chrome.style.display="block"; 97. } 98. } 99. catch(e)//...
<param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/flash/music.swf" /> <param name="wmode" value="transparent"> 音乐.mp3"> 使用时替换“音乐.mp3”文件为你...
7.<embed src="update_.swf" quality="high" bgcolor="#ffffff" width="408" height="323" name="update_" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-...
原创flash音乐动画《知我无情有情》地址...invokeurls="false" quality="high" allowScriptAccess="never" allowNetworking="internal"></P>
<embed tplayername="SWF" splayername="SWF" type="application/x-shockwave-flash" src="tagcloud.swf?r=8269298" mediawrapchecked="true" pluginspage=...
Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。 Zero Clipboard的安装方法 首先需要...
+button_pos+'&stop_time='+stop_time+'" quality="high" width="'+ pic_width +'" height="'+ swf_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage=...
首先,在页面中嵌入视频的HTML代码为: 复制代码代码如下: ”youku” class=”youku”> <object id=”obx” name=”obx” width=”290″ height=”260″>...param name=”allowscriptaccess
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="175" height="292"> ...
data="/scripts/player/FlexPaperViewer.swf" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always">...
embed src="webcam.swf" flashvars="server=rtmp://localhost/live&stream=plop" bgcolor="#ffffff" width="500" height="500" name="haxe" quality="high" align="middle" allowScriptAccess="a
'internal', 'allowScriptAccess', 'none', 'src', 'template/default/style/t6/star.swf', 'quality', 'high', 'bgcolor', '', 'wmode', 'transparent', 'allowfullscreen', 'true' ); $('myadswfshow').style....
oswf.addParam("allowScriptAccess", "always"); oswf.addParam("menu", "false"); oswf.addParam("wmode", "opaque"); oswf.addParam("scale", "noscale"); oswf.addVariable("pic_width", "120"); //图片宽 ...
so.addParam("allowscriptaccess","always"); so.addParam("wmode","opaque"); so.addParam("quality","high"); so.addParam("salign","lt"); so.addVariable("CuPlayerSetFile","()%>/js/player/...
,'activeTriggerCls':'.tshop-psm-shop-ww-hover','interval':... <embed allownetworking="all" allowscriptaccess="never" flashvars="scene=taobao_shop" height="1000" name="flashfirebug_1387778983714" src=...
<<<<<<< HEAD 块搜索 Blockssearch 是一个面向挪威学校的网站,它有指向他们学习网站的链接,甚至还有一些疯狂的随机游戏,如果你想看这个网站,请访问 ... 要让 Flash 信任您的本
s1.addParam("allowscriptaccess","always"); s1.addParam("flashvars","file=video.flv&image=preview.jpg&logo=logo.gif"); s1.write("container"); [removed] logo做成背景透明效果会比较好。