藍(lán)色空間
          簡單的程序人生
          posts - 11,comments - 70,trackbacks - 0

                  今天在給blog添加代碼著色的功能的時候發(fā)現(xiàn)SyntaxHighlighter項(xiàng)目中使用的復(fù)制代碼功能的腳本如果瀏覽器不是IE的話是使用的一個flash實(shí)現(xiàn)的,而且還要在HighlightAll調(diào)用之前先寫一句dp.SyntaxHighlighter.ClipboardSwf = 'xxxxxx',太麻煩了,google了一下發(fā)現(xiàn)也有純javascript實(shí)現(xiàn)拷貝的方法。

          function copyCode(id) {
           var txt=document.getElementById(id).innerText;
           if(window.clipboardData){  
            window.clipboardData.clearData();  
            window.clipboardData.setData("Text", txt);
           }  
           else if(navigator.userAgent.indexOf("Opera") != -1){  
            window.location = txt;  
           }  
           else if (window.netscape){ 
            txt=document.getElementById(id).textContent;
            try {  
             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
            }  
            catch (e){  
             alert("!!被瀏覽器拒絕!\n請在瀏覽器地址欄輸入’about:config’并回車\n然后將’signed.applets.codebase_principal_support’設(shè)置為’true’");  
            }  
            var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);  
            if (!clip) return;  
            var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);  
            if (!trans) return;  
            trans.addDataFlavor("text/unicode");  
            var str = new Object();  
            var len = new Object();  
            var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);  
            var copytext = txt;  
            str.data = copytext;  
            trans.setTransferData("text/unicode",str,copytext.length*2);  
            var clipid = Components.interfaces.nsIClipboard;  
            if (!clip) return false;  
            clip.setData(trans,null,clipid.kGlobalClipboard);  
           }
           window.status="代碼已被復(fù)制到剪貼板!Contents have copied to clipboard!"
           setTimeout("window.status=''",3600)
           return true;  
          }
          
                  參數(shù)id就是你想要拷貝其內(nèi)容的div的id。非常的簡單。
          posted on 2008-02-29 14:38 ivin 閱讀(387) 評論(0)  編輯  收藏 所屬分類: JavaScript

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 云和县| 鸡西市| 南部县| 民县| 罗城| 阿图什市| 科技| 威信县| 丰都县| 砀山县| 喀喇| 宁津县| 通州市| 塘沽区| 恩平市| 肃宁县| 沅陵县| 曲麻莱县| 扶沟县| 黔西县| 玉田县| 平原县| 邻水| 达孜县| 手游| 樟树市| 黄石市| 鱼台县| 宜良县| 夏河县| 彭水| 巴青县| 美姑县| 镇巴县| 堆龙德庆县| 泽州县| 屏山县| 汝阳县| 额济纳旗| 澳门| 宜州市|