RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [Discuz] 論壇的[code]代碼   字型大小:||| 
Katsuya
青銅驢友
等級: 11等級: 11等級: 11等級: 11


今日心情

 . 積分: 296
 . 文章: 316
 . 收花: 2121 支
 . 送花: 91 支
 . 比例: 0.04
 . 在線: 3663 小時
 . 瀏覽: 23675 頁
 . 註冊: 7216
 . 失蹤: 109
#1 : 2008-4-9 03:48 PM     只看本作者 引言回覆

這裡的code是我常用的代碼
因為常常設密碼

範例
但上面的copy to clipboard 卻對FF不支援,不知道可不可以修改為FF和IE通用的呢?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#2 : 2008-4-9 06:10 PM     只看本作者 引言回覆

因為安全性、隱私性緣故,FX、JavaScript 都不提供直接存取剪貼簿功能
為什麼 IE 可以!?
因為實際負責複製資料到剪貼簿的指令: execCommend("copy") 是 IE 提供的指令

以前曾見過有人寫了一大串 Script,讓 FX 也可以使用剪貼簿

複製純文字

/**************************************************
http://www.krikkit.net/howto_javascript_copy_clipboard.html
**************************************************/
function setClipboard(maintext) {
   if (window.clipboardData) {
      return (window.clipboardData.setData("Text", maintext));
   }
   else if (window.netscape) {
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      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=maintext;
      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);
      return true;
   }
   return false;
}
貼上純文字

/**************************************************
http://www.codebase.nl/index.php/command/viewcode/id/174
**************************************************/
function getClipboard() {
   if (window.clipboardData) {
      return(window.clipboardData.getData('Text'));
   }
   else if (window.netscape) {
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      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');
      clip.getData(trans,clip.kGlobalClipboard);
      var str = new Object();
      var len = new Object();
      try {
         trans.getTransferData('text/unicode',str,len);
      }
      catch(error) {
         return null;
      }
      if (str) {
         if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
         else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
         else str = null;
      }
      if (str) {
         return(str.data.substring(0,len.value / 2));
      }
   }
   return null;
}
現在看到比較新的作法是利用 Flash 的 flashvars 屬性做到
JavaScript 程式碼及 SWF 檔,請見 http://www.jeffothy.com/weblog/clipboard-copy/



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
mmmmnb
白金驢友〔初級〕
等級: 20等級: 20等級: 20等級: 20等級: 20
.......

今日心情

 . 積分: 4173
 . 文章: 1180
 . 收花: 30270 支
 . 送花: 1334 支
 . 比例: 0.04
 . 在線: 2682 小時
 . 瀏覽: 7041 頁
 . 註冊: 7232
 . 失蹤: 880
 . 巨乳星球
#3 : 2008-5-19 11:07 PM     只看本作者 引言回覆

想請問一下那個網站提供的SWF要怎麼使用?
我想要再我的論壇新增一個FireFox可用的CODE語法
因為是免費論壇 所以無法更動程式碼部分



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#4 : 2008-5-20 01:13 AM     只看本作者 引言回覆



<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function copy(inElement) {
  if (inElement.createTextRange) {
    var range = inElement.createTextRange();
    if (range && BodyLoaded==1)
      range.execCommand('Copy');
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}
-->
</SCRIPT>
<form name="formtocopy">
<textarea name="texttocopy">
A whole bunch of text here that will be copied.
</textarea>
<br>
<a href="javascript:copy(document.formtocopy.texttocopy);">Copy the Text!</a>
</form>
既然是不提供更改程式碼的免費論壇,那要新增這功能恐怕是不太可能。
論壇程式我沒研究,所以幫不上忙了。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
mmmmnb
白金驢友〔初級〕
等級: 20等級: 20等級: 20等級: 20等級: 20
.......

今日心情

 . 積分: 4173
 . 文章: 1180
 . 收花: 30270 支
 . 送花: 1334 支
 . 比例: 0.04
 . 在線: 2682 小時
 . 瀏覽: 7041 頁
 . 註冊: 7232
 . 失蹤: 880
 . 巨乳星球
#5 : 2008-5-20 02:57 AM     只看本作者 引言回覆

上面的script免費論壇是有辦法安插到<HEAD>中
插進去檢視原始檔也有看到這些script
自己在本機測試是可以用只是複製出來不能換行
丟到論壇上就無法複製囉
可能是下面的form那邊出問題
能修改成不用FORM而像code語法用<div>嗎



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#6 : 2008-5-21 03:50 AM     只看本作者 引言回覆



<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
function copy(inElement) {
  inElement = document.getElementById(inElement);
  var rangeText = (inElement.innerText) ? inElement.innerText : inElement.textContent;
  var flashcopier = 'flashcopier';
  if(!document.getElementById(flashcopier)) {
    var divholder = document.createElement('div');
    divholder.id = flashcopier;
    document.body.appendChild(divholder);
  }
  document.getElementById(flashcopier).innerHTML = '';
  var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(rangeText)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
  document.getElementById(flashcopier).innerHTML = divinfo;
}
</SCRIPT>
<div id="texttocopy" style="width:300px;height:200px;border:1px solid black;">
A whole bunch of text here that will be copied.
</div>
<a href="javascript:copy('texttocopy');">Copy the Text!</a>



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
mmmmnb
白金驢友〔初級〕
等級: 20等級: 20等級: 20等級: 20等級: 20
.......

今日心情

 . 積分: 4173
 . 文章: 1180
 . 收花: 30270 支
 . 送花: 1334 支
 . 比例: 0.04
 . 在線: 2682 小時
 . 瀏覽: 7041 頁
 . 註冊: 7232
 . 失蹤: 880
 . 巨乳星球
#7 : 2008-5-21 10:42 AM     只看本作者 引言回覆

多謝Jonson兄
基本上可用了
例: http://ytk.b.forumable.net/tc/viewthread.php?tid=2328

不過我稍微改一下 因為CODE語法中就是要不解析Discuz!標籤和HTML
在沒辦法改程式碼的情況下自定義的Discuz!標籤好像沒辦法達成這樣的效果
所以我就用自定義的標籤包住原來的CODE標籤 然後複製目標指向原CODE標籤的DIV ID
不過一個頁面有兩個以上的CODE標籤第二個就無法複製囉
因為原CODE標籤生成的DIV ID會遞增 code0 code1 ....
這是免費論壇的極限了吧



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#8 : 2008-5-21 09:19 PM     只看本作者 引言回覆



<a href="###" class="smalltxt" onclick="copy($(this.parentNode.parentNode.nextSibling.id));">[Copy to clipboard]</a>
看能不能直接取代原本的那個複製連結;
底下那個

<a href="javascript:copy('code0');">FireFox點我複製文字</a>
就不需要了,

[Jonson 在  2008-5-21 09:28 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#9 : 2008-5-21 09:43 PM     只看本作者 引言回覆

上面使用 this.parentNode.parentNode.nextSibling.id 這種層推的方式取得節點 (node),實在不是很好的方法
因為有一些 IE 不當做節點的標籤 (tag),FX 會把它們當做節點
不過,因為論壇格式固定,所以這方法可能可以用

或者你可以在 onclick 中呼叫另一個函數來分析、取得你想要的節點

[Jonson 在  2008-5-21 11:30 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
mmmmnb
白金驢友〔初級〕
等級: 20等級: 20等級: 20等級: 20等級: 20
.......

今日心情

 . 積分: 4173
 . 文章: 1180
 . 收花: 30270 支
 . 送花: 1334 支
 . 比例: 0.04
 . 在線: 2682 小時
 . 瀏覽: 7041 頁
 . 註冊: 7232
 . 失蹤: 880
 . 巨乳星球
#10 : 2008-5-22 05:59 AM     只看本作者 引言回覆

不行用 ><
看來要去好好KK javascript和php了

想到一個方法手動 不過好麻煩
EX:
[newcode=code0][/newcode]
[newcode=code1][/newcode]
.
.
.
[newcode=codeN][/newcode]

這樣



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Jonson
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16
藏雲

今日心情

 . 積分: 1796
 . 文章: 1756
 . 收花: 15380 支
 . 送花: 6709 支
 . 比例: 0.44
 . 在線: 5889 小時
 . 瀏覽: 77021 頁
 . 註冊: 7280
 . 失蹤: 26
#11 : 2008-5-22 10:47 PM     只看本作者 引言回覆



<DIV class=msgborder id=texttocopy style="BORDER: black 1px solid;">
    <DIV class="msgheader right">
        <A class=smalltxt onclick="copy(this.parentNode.nextSibling.nextSibling.nextSibling.nextSibling.id);" href="###">
            [Copy to clipboard for FX]
        </A>
    </DIV>
    <BR><BR>
    <DIV class=msgheader>
        <DIV class=right>
            <A class=smalltxt onclick="copycode($('code0'));" href="###">
                [Copy to clipboard for IE]
            </A>
        </DIV>
        CODE:
    </DIV>
    <DIV class=msgborder id=code0>
        [size=6]1234[/size]<BR>1234<BR>[size=7]1234[/size]<BR>[align=right]1234[/align]<BR>[align=center]1234[/align]<BR>[color=Red]1234[/color]<BR>[align=center][b][i][u][size=7][color=LemonChiffon]1234[/color][/size][/u][/i][/b][/align]<BR>1234
    </DIV>
    <BR>
</DIV>
<A href="javascript:copy('code0');">FireFox複製文字點我</A>
第一個 onclick 中還可以寫成:
copy(this.parentNode.parentNode.childNodes[4].id);

如果可以將上面 CODE 中的 "<BR><BR>" 拿掉,
那麼第一個 onclick 裡面可改成底下這樣:
copy(this.parentNode.nextSibling.nextSibling.id);
如果可以將最後面那個 "<BR>" 拿掉,
onclick 可以改成底下這樣:
copy(this.parentNode.parentNode.lastChild.id);

最後一行
<A href="javascript:copy('code0');">FireFox複製文字點我</A>
可以拿掉了

[Jonson 在  2008-5-22 10:54 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-4-16 12:51 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.030283 second(s), 7 queries , Qzip disabled