1 頁 (共 1 頁)

[問題] 關於 BBCode 的游標移動問題

發表於 : 2004-10-15 15:08
brentsu
我們可以在【發表新主題】的時候用 Quote, Code PHP List Img URL .... 按鈕,比如最常用的但是 Img 跟 URL,在按下按鈕後游標的插入點並不會跟著移動,舉例來說,要貼圖的話,要這麼做:

1. 按 Img 按鈕
2. 自己把插入點移到 [ IMG ] 的後面\r
3. 輸入或貼上圖片網址
4. 再按 *IMG 按鈕
5. 再把插入點移到 [ /IMG ] 的後面\r
6. 按 Enter 換行再繼續輸入文字

如果 BBcode 會自動移動插入點,就可以偷懶少按幾次......
不知道說這麼多,能否了解我的問題??

請問要如何修改程式呢?

●架設主機作業系統:Windows Server 2003
●您安裝的程式:php 5.0
●您的 phpBB2 版本:phpBB 2.0.10 + MS SQL Server 2000 中文版

發表於 : 2005-08-11 16:42
依夢兒
因為最近剛好也想要解決這一個問題,所以我把舊文給挖出來了....^^"

解決方法請見:http://www.phpbb.com/phpBB/viewtopic.php?t=247629
安裝後,現在按下 BBCode 按鈕,語法會直接貼到游標停留的位置,不會再跑到文章結尾了。 :-P


在此順便請教一下,如果我也想要將這樣的效果套用到以下二支外掛,該怎麼作?
Clone BBCode http://phpbb-tw.net/phpbb/viewtopic.php?t=21755
訊息罐頭 http://phpbb-tw.net/phpbb/viewtopic.php?t=20070

發表於 : 2005-08-11 17:16
Kill
依夢兒 寫:因為最近剛好也想要解決這一個問題,所以我把舊文給挖出來了....^^"

解決方法請見:http://www.phpbb.com/phpBB/viewtopic.php?t=247629
安裝後,現在按下 BBCode 按鈕,語法會直接貼到游標停留的位置,不會再跑到文章結尾了。 :-P
剛裝來試試看
結果在2.0.17的環境下居然沒有效果 :-o
後來找到了1.0.1版的
還是不行(汗

發表於 : 2005-08-11 17:19
依夢兒
k122417901 寫:剛裝來試試看
結果在2.0.17的環境下居然沒有效果 :-o
後來找到了1.0.1版的
還是不行(汗
怪了,我的 phpBB 版本也是 2.0.17 呀?
安裝後使用一切正常.... :roll:

發表於 : 2005-08-11 17:53
Kill
這就奇怪了...
還是因為我有裝Multi_bbcode的緣故?

發表於 : 2005-08-12 01:42
依夢兒
k122417901 寫:這就奇怪了...
還是因為我有裝Multi_bbcode的緣故?
Multi BBcode 我也有裝耶~ :roll:

發表於 : 2005-08-12 03:24
~倉木麻衣~
依夢兒 寫:在此順便請教一下,如果我也想要將這樣的效果套用到以下二支外掛,該怎麼作?
Clone BBCode http://phpbb-tw.net/phpbb/viewtopic.php?t=21755
訊息罐頭 http://phpbb-tw.net/phpbb/viewtopic.php?t=20070
前提:已按解法方法的內容作修正
  1. Clone BBCode

    代碼: 選擇全部

    #
    #--------[ OPEN ]----------------
    #
    templates/yourTemplates/posting_body.tpl
    
    #
    #--------[ FIND ]----------------
    #
    function text(str){ document.post.message.value=document.post.message.value+str; }
    
    #
    #--------[ REPLACE WITH]----------------
    #
    function text(str){ bbplace(str); }
    
    #
    #--------[ SAVE/CLOSE ALL FILES ]----------------
    #
    # EoM
  2. 訊息罐頭\r

    代碼: 選擇全部

    #
    #--------[ OPEN ]----------------
    #
    templates/yourTemplates/posting_body.tpl
    
    #
    #--------[ FIND ]----------------
    #
    		if (!theSelection) {
    \n			txtarea.value += bbopen + bbclose;
    
    #
    #--------[ REPLACE WITH]----------------
    #
    		if (!theSelection) {
    			bbplace(bbopen + bbclose);
    
    #
    #--------[ FIND ]----------------
    #
    	else
    	{
    		txtarea.value += bbopen + bbclose;
    
    #
    #--------[ REPLACE WITH]----------------
    #
    	else
    	{
    		bbplace(bbopen + bbclose);
    
    #
    #--------[ SAVE/CLOSE ALL FILES ]----------------
    #
    # EoM
    其實就是將 txtarea.value += bbopen + bbclose; 改成 bbplace(bbopen + bbclose);罷了
    不過這樣子一改的話, 連同原本的字型顏色及大小bbcode語法會直接貼到游標停留的位置, 不會再跑到文章結尾了

發表於 : 2005-08-12 05:50
momoC
我也是 2.0.17,也工作的很好耶~謝謝提供解答! :-D

發表於 : 2005-08-12 15:39
依夢兒
感謝~倉木麻衣~的指導,一切 OK ! :-P

發表於 : 2005-08-14 16:07
brentsu
嗚~~~~ 我該喜極而泣嗎???
貼了這麼久.... 想不到終於有重見天日的時候...... 嗚~~~
有空我也來裝看看.....

謝謝囉~~

發表於 : 2005-08-17 21:44
風之劍客
沒事逛竹貓,看到此篇!
正好解決了這個問題~^^

原來大大們都逛外國網站阿~
這對學測英文40幾分的我來講太殘酷了拉~(哭泣中.... :cry:

發表於 : 2005-11-17 09:36
brentsu
因為全新安裝了 phpBB 2.0.18,所以又把以前裝過的 MOD 再通通重裝一次.... 嗚~~~

我發現這個【Accurate BBCode Insertion Mod】只對 IE 有效,對我的 Safari 則是一點用也沒有!

按下 Quote、Img、URL 按鈕,代碼還是跑到最後面,一點也不管現在的游標位置....

我猜想這可能是【function bbplace(text)】函示,傳回的游標位置有誤,導致 BBcode 在 Safari 中失效....

問題是.... 我研究了半天也不知道問題出在哪.... 都是比較與運算,好像沒有傳回游標位址的動作....

代碼: 選擇全部

function bbplace(text) {
	var txtarea = document.post.message;
	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
		txtarea.focus();
	} else {
		txtarea.value  += text;
		txtarea.focus();
	}
}
在原廠討論區有人針對 Mozilla 修改程式,就像這樣:

http://www.phpbb.com/phpBB/viewtopic.ph ... 0c866fa723

代碼: 選擇全部

function bbplace(text) { 
    var txtarea = document.post.message; 
    if (txtarea.createTextRange && txtarea.caretPos) { 
        var caretPos = txtarea.caretPos; 
        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; 
        txtarea.focus(); 
    } else if (txtarea.selectionStart || txtarea.selectionStart == '0') { 
        var startPos = txtarea.selectionStart; 
        var endPos = txtarea.selectionEnd; 
        txtarea.value = txtarea.value.substring(0, startPos) 
                      + text 
                      + txtarea.value.substring(endPos, txtarea.value.length); 
        txtarea.focus(); 
        txtarea.selectionStart = startPos + text.length; 
        txtarea.selectionEnd = startPos + text.length; 
    } else { 
        txtarea.value  += text; 
        txtarea.focus(); 
    } 
}
但是很不幸的..... 這個程式真的是【it works in Mozilla too】,也就是 IE 跟 Mozilla 都能用,但 Safari 還是一點用也沒有..... 嗚~~~
也有人說【Safari 1.2.4 it does not work】,事實上 2.0.2 還是不能用...

最後能找到的也只有這個版本了:

代碼: 選擇全部

##   2004-05-18 - Version 1.0.1 
##      - Improvements to make it work in all of Mozilla Firefox 1, Opera 8 and IE 6 
##      - not tested on OS-X Safari 
同樣的也有人說 Safari 2.0 還是不能用.... 哎~~
我猜想根本的問題是出在 phpBB 本身不支援 Safari...
因為在 Safari 上面按【表情符號】,代碼只會加到最後,而不會加在游標後面,於是 BBcode 也不行....

發表於 : 2006-02-15 02:22
brentsu
這篇很久以前的文章,再挖出來討論一下....

Accurate BBCode Insertion Mod 的 1.0 版發表一段時間了,裝上之後使用 BBcode 按鈕,會自動移動游標位置。Safari 新版也解決了這個問題,所以我上面問的問題,只要升級 Safari 就解決了,只是直到最近才解決的... :evil:

雖然按【Quote】、【Code】都會移動游標,但是【字型顏色】與【字型大小】卻不會!

請問有安裝這個外掛的【依夢兒】跟【倉木麻衣】,有沒有遇到這個問題?有解決的辦法嗎?

發表於 : 2006-02-15 07:55
~倉木麻衣~
因為它只有針對字型以外的做修正
要連字型顏色大小也修正的話, 請將底下程式碼\r

代碼: 選擇全部

txtarea.value += bbopen + bbclose;
改成

代碼: 選擇全部

bbplace(bbopen + bbclose);
共計二個地方(皆位於bbfontstyle()裡)

發表於 : 2006-02-15 16:12
brentsu
哈哈.... 改好囉~~感謝倉木麻衣!! :-D

修改的檔案同樣是風格中的 posting_body.tpl 檔。
原來跟上面一樣,要把那個字串累加程式改成呼叫新的 bbplace 啊...

再次感謝! :-D