輕鬆去掉web中flash右鍵選單【轉】

nighthun發表於2009-08-14

轉自

今天無意中看到一個畫面還不錯的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", ");
so.write("testContent");

NoRightClick("testContent");
script>body>

經過試驗,該程式碼可以在IE、Firefox和Google Chrome裡去掉flash的右鍵選單,還是挺方便的。至於這樣做有什麼意義呢?我暫時還沒有想到——但網上搜尋一下,有這種需求的人還是不少的。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/106943/viewspace-1025297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章