ITPub博客

首页 > 应用开发 > IT综合 > 轻松去掉web中flash右键菜单【转】

轻松去掉web中flash右键菜单【转】

原创 IT综合 作者:nighthun 时间:2009-08-14 17:09:11 0 删除 编辑

转自http://www.qgy18.com/2009/04/noflashmenu/

今天无意中看到一个画面还不错的webgame,随手右键单击看是否用flash写的(我对flash的判断标准是看右键菜单有无About Adobe Flash Player…字样),但是点了居然不出任何菜单。记得之前看到要完全干掉flash右键菜单要用到一些很WS的方法,不知道这个webgame怎么实现的。看了一下它的代码,原来是在flash父容器里做文章:firefox下阻止mousedown默认事件及事件传播;IE下给父容器setCapture。摘录核心代码稍加改造就是下面这个样子:

function NoRightClick(pid){//pid:flash's parentNode id
var el = document.getElementById(pid);
if(el.addEventListener){
el.addEventListener("mousedown",function(event){
if(event.button == 2){
event.stopPropagation(); //for firefox
event.preventDefault(); //for chrome
}
},true);
}else{
el.attachEvent("onmousedown",function(){
if(event.button == 2){
el.setCapture();
}
});
el.attachEvent("onmouseup",function(){
el.releaseCapture();
});
el.oncontextmenu = function(){
return false;
};
}};
<body>
<div id="testContent" style="width:800px">
div>
<script type="text/javascript">
var so = new SWFObject("test.swf", "t1", "800", "550", "9", "#000000");
so.addParam("quality", "high");
so.addParam("name", "t1");
so.addParam("id", "t1");
so.addParam("algin", "middle");
so.addParam("AllowScriptAccess", "sameDomain");
so.addParam("menu", "false");
so.addParam("wmode", "opaque");
so.addParam("pluginspage", "http://www.adobe.com/go/getflashplayer");
so.write("testContent");

NoRightClick("testContent");
script>body>

经过试验,该代码可以在IE、Firefox和Google Chrome里去掉flash的右键菜单,还是挺方便的。至于这样做有什么意义呢?我暂时还没有想到——但网上搜索一下,有这种需求的人还是不少的。

演示地址

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/106943/viewspace-1025297/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    60
  • 访问量
    258201