去除flash边框虚框的方法代码

各位在设计、制作或者处理自己的blog的时候会遇到插入flash文件,自己在IE打开这个页面后,flash上面会浮现一个虚框,需要点击一次后才可以操作。程序繁琐,不免让喜欢简单的朋友觉得复杂。另外虚框也影响了网页的整体美观性和体验性。

这里分享一段代码,只要在网页中插入,所有swf文件的虚框将会消失,是不是很得意呢?哈哈,代码如下:

 

将其保存为flash_no.js,在你需要的前台页面head中加入:

<head>
 
 
<script type="text/javascript" src="script/flash_no.js"></script>
 
</head>

 

 

flash_no.js:

 

/**
  * @author [cengis]Mihawk
  * @version v1.0
  * Date:2007-6-21 
  */
 
 
var ie = (document.defaultCharset && document.getElementById && !window.home);
var opera9 = false;
if (ie){
    var ver=navigator.appVersion.split("MSIE")
    ver=parseFloat(ver[1])
    ie = (ver >=6)
}else if (navigator.userAgent.indexOf("Opera")!=-1) {
    var versionindex=navigator.userAgent.indexOf("Opera")+6
    if (parseInt(navigator.userAgent.charAt(versionindex))>=9)
    opera9 = true;
}
var oswap = (ie || opera9)
if (oswap){
    document.write ("<style id='hideObject'> object{display:none;} </style>");
}
objectSwap = function(){
    if (!document.getElementsByTagName){
        return;
    }
    var stripQueue = [];
    var objects = document.getElementsByTagName('object');
    for (var i=0; i<objects.length; i++){            
        var o = objects[i];    
        var h = o.outerHTML;
        var params = "";
        var hasFlash = true;
        for (var j = 0; j<o.childNodes.length; j++) {
            var p = o.childNodes[j];
            if (p.tagName == "PARAM"){
                if (p.name == "flashVersion"){
                    hasFlash = detectFlash(p.value);
                    if (!hasFlash){
                        o.id = (o.id == "") ? ("stripFlash"+i) : o.id;
                        stripQueue.push(o.id);
                        break;
                    }
                } 
                params += p.outerHTML;               
            }
        }    
        if (!hasFlash){
            continue;
        }        
        if (!oswap){
            continue;
        } 
        if (o.className.toLowerCase().indexOf ("noswap") != -1){
            continue;
        }        
        var tag = h.split(">")[0] + ">";            
        var newObject = tag + params + o.innerHTML + " </OBJECT>";    
        o.outerHTML = newObject;
    }
    if (stripQueue.length) {
        stripFlash(stripQueue)
    }
    if (oswap){
        document.getElementById("hideObject").disabled = true;
    }
}
 
detectFlash = function(version){
    if(navigator.plugins && navigator.plugins.length){
        var plugin = navigator.plugins["Shockwave Flash"];
        if (plugin == undefined){
            return false;
        }
        var ver = navigator.plugins["Shockwave Flash"].description.split(" ")[2];
        return (Number(ver) >= Number(version))
    } else if (ie && typeof (ActiveXObject) == "function"){
        try{
            var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + version);
            return true;
        }
        catch(e){
            return false;
        }
    }
    return true;
}
 
stripFlash = function (stripQueue){
    if (!document.createElement){
        return;
    }
    for (var i=0; i<stripQueue.length; i++){
        var o = document.getElementById(stripQueue[i]);
        var newHTML = o.innerHTML;    
        newHTML = newHTML.replace(/<!--\s/g, "");
        newHTML = newHTML.replace(/\s-->/g, "");
        newHTML = newHTML.replace(/<embed/gi, "<span");        
        var d = document.createElement("div");
        d.innerHTML = newHTML;
        d.className = o.className;
        d.id = o.id;
        o.parentNode.replaceChild(d, o);
    }
}
 
var tempFunc = window.onload;
window.onload = function(){
    if (typeof (tempFunc) == "function"){
        try{
            tempFunc();
        } catch(e){}
    }
    objectSwap();
}

 

 

 

原文地址:http://yourxin.com/blog/article.asp?id=46

posted @ 2010-01-21 11:59  李济宏(Amadeus)  阅读(295)  评论(0编辑  收藏  举报