嗯,上星期五Alina在我寫的連結部落格的貼紙(LOGO)語法教學問我該如何製作讓人方便複製的語法
因為想說那天晚上是我打算要架站的時間,因此就很簡單地寫了幾個顯示框讓裡面可以秀出語法的方式
但後來自己在測試的時候才發現,那樣寫並不好,因為在有鎖copy的IE瀏覽器中,還是無法全選複製
因此後來就想說再研究一下(我不喜歡感覺那樣事情做一半的樣子)
之後寫了一個簡單的button可以按,按完以後語法就自動複製了,但因為我前面少寫了很多東西,因此在複製成功的同時也會看到錯誤訊息的語法
結果只好在前面補上一個script來解決這個問題啦!(不然別人在copy的時候看到警語搞不好還會被嚇到)

只是這樣的語法就比較長,沒有辦法像之前簡單的小語法可以馬上回覆在迴響裡跟Alina說
因此我答應他這個週末會寫教學出來,所以今天這篇自動複製語法教學就誕生啦XD

我想先從簡單的寫起好嘍!(免得一開始就嚇到人@@)
簡單的基本上只要您的BLOG沒有使用鎖複製的功能的話,基本上就很好使用嘍^^

如果您要讓人複製的內容很簡短的話可用單行的:
<input type="text" id="您想幫他取的名字(記得給半形的英文或數字)" size="您想顯示的長度(記得給半形的數字)">語法放這裡</textarea>
想要讓人指到就自動反白的話可以加上onfocus="this.select()" onmouseover="this.focus()"變成:
<input type="text" id="您想幫他取的名字(記得給半形的英文或數字)" size="您想顯示的長度(記得給半形的數字)" onfocus="this.select()" onmouseover="this.focus()">語法放這裡</textarea>
單行的size可以決定顯示出來的框有多長一條

而如果您的語法比較長的話,建議可以使用多行的唷^^
<textarea rows="您想顯示的縱向長度(記得給半形的數字)" id="您想幫他取的名字(記得給半形的英文或數字)" cols="您想顯示的橫向長度(記得給半形的數字)">語法放這裡</textarea>

<textarea rows="您想顯示的縱向長度(記得給半形的數字)" id="您想幫他取的名字(記得給半形的英文或數字)" cols="您想顯示的橫向長度(記得給半形的數字)" onfocus="this.select()" onmouseover="this.focus()">語法放這裡</textarea>

當然,如果能提供一個複製的按鈕的話,我想會更方便的
只是語法就要加上滿多東西的嘍@@"
一開始,必需先在前面加一個script,然後再放上剛剛上面寫的那種讓人複製語法用的東西,最後才在下面放一個複製的扭讓人按^^語法如下:(注意script的中文部份都不要改唷!語法也不要改-.-除非您看的懂且知道如何修改XD可以自行設定的我都有用粗體與底線顯示唷^^)

<script type="text/javascript">
function copyToClipboard(txt)
{
 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)
 {
  try
  {
   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  }
   catch (e)
   {
    alert("被瀏覽器拒絕!\n請在瀏覽器地址欄輸入'about:config'之後退回\n將'signed.applets.codebase_principal_support'設置為'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);
 }
 alert('已經複製');
}
</script>
<textarea rows="6" id="watermay" cols="20" onfocus="this.select()" onmouseover="this.focus()"><a target="_blank" href="連結網址" _fcksavedurl="連結網址"><img src="圖片網址" _fcksavedurl="圖片網址" border="0" /></a></textarea><br><button onclick="copyToClipboard(watermay.value);">複製</button>


嗯~這樣...應該...不會...太難...吧......
好久沒寫教學了,感覺說的好心虛orz...
有問題可以留在回響問我嘍!希望對大家都能有幫助^^

 

arrow
arrow
    全站熱搜

    如雲 發表在 痞客邦 留言(11) 人氣()