LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: bibicall 於 五月 28, 2005, 08:46:28 下午



主題: [問題]smileys在firefox下沒作用?
作者: bibicall五月 28, 2005, 08:46:28 下午
把smileys加上去之後
發現一個小問題,IE可以點選,但firefox不行
不過用firefox測試了一下中文官方官網的smileys卻是可以的
印象中在隨便祭裡面有人問過這個問題
但是隨便祭現在好像沒辦法瀏覽了^o)
有誰可以幫幫我解決這個問題嗎?
感恩啊


主題: [問題]smileys在firefox下沒作用?
作者: bibicall五月 28, 2005, 09:03:54 下午
解答詳見這篇 (http://forums.lifetype.net/viewtopic.php?t=2135&highlight=smileys+plugin)
是javascript error
新版的smileys檔案已更新

不過裡面的方法都是過了,也更新過檔案了
結果目前只有Standard模版可以
其他模版都失敗


主題: [問題]smileys在firefox下沒作用?
作者: bibicall五月 29, 2005, 07:47:19 下午
將smileys.js做點小修正就可以了
原始程式碼如下:
引用
function writeImgTag( tag )
{
   //var myField = document.NewComment.commentText;
   var myField = document.getElementById( "commentText" );

   tag = ' ' + tag + ' ';
   
   if (document.selection) {
      myField.focus();
      sel = document.selection.createRange();
      sel.text = tag;
      myField.focus();
   }


將紅字部分修改成:

引用
function writeImgTag( tag )
{
   var myField = document.NewComment.commentText;
   //var myField = document.getElementById( "commentText" );

   tag = ' ' + tag + ' ';
   
   if (document.selection) {
      myField.focus();
      sel = document.selection.createRange();
      sel.text = tag;
      myField.focus();
   }


主題: [問題]smileys在firefox下沒作用?
作者: markwu五月 30, 2005, 11:19:21 上午
其實原本我 commit 到 SVN 上的程式是

程式碼:
var myField =  document.NewComment.commentText; ... (1)


但是 Oscar 改成了

程式碼:
var myField = document.getElementById( "commentText" ); ... (2)


原因是有的人他把 Comment Form 的名稱改了,所以造成第一個程式無法運作。然後 Oscar 就改成 第二個程式,第二個程式會自動搜尋 "commentText" 這個 ID 來找到 這個 Textarea 的物件。

但是不管是 1 還是 2,在 Form 跟 TextArea 這兩個 HTML Tag 內,都必須包含 ID 跟 Name 這兩個 property.

如果你的 表情符號無法運作,一定是在 HTML Tage 少了這兩個 property.
 :-)
 
Mark


主題: [問題]smileys在firefox下沒作用?
作者: bibicall五月 30, 2005, 02:29:10 下午
引用自: markwu
但是不管是 1 還是 2,在 Form 跟 TextArea 這兩個 HTML Tag 內,都必須包含 ID 跟 Name 這兩個 property.
如果你的 表情符號無法運作,一定是在 HTML Tage 少了這兩個 property.
 :-)
 Mark


我修改smileys.js之前,我很確定在commentform模版裡面的<form> tag裡面
有這兩個屬性,也沒將ID與Name改成NewComment
結果最後只有Standard模版是正常的
所以後來我就把smileys.js改掉,並修改commentform <form> tag 的ID與Name
都改成NewComment,這樣才成功的解決問題

我想Oscar改的程式無法一體適用吧~因為我修改的過程中發現,許多模版在commentform <form> tag 的寫法都不一樣,不一定都會用NewComment


主題: [問題]smileys在firefox下沒作用?
作者: markwu五月 31, 2005, 03:48:29 下午
引用自: bibicall
引用自: markwu
但是不管是 1 還是 2,在 Form 跟 TextArea 這兩個 HTML Tag 內,都必須包含 ID 跟 Name 這兩個 property.
如果你的 表情符號無法運作,一定是在 HTML Tage 少了這兩個 property.
 :-)
 Mark


我修改smileys.js之前,我很確定在commentform模版裡面的<form> tag裡面
有這兩個屬性,也沒將ID與Name改成NewComment
結果最後只有Standard模版是正常的
所以後來我就把smileys.js改掉,並修改commentform <form> tag 的ID與Name
都改成NewComment,這樣才成功的解決問題

我想Oscar改的程式無法一體適用吧~因為我修改的過程中發現,許多模版在commentform <form> tag 的寫法都不一樣,不一定都會用NewComment


所以Oscar 的方式還比較好喔。

var myField = document.getElementById( "commentText" );

他是用 DOM 結構來找 commetText 這個物件,所以不管 form 的名稱是 XX 還是 YY ,他都可以找到。

用 我原來的方法,反而可能找不到。

Mark


主題: [問題]smileys在firefox下沒作用?
作者: bibicall五月 31, 2005, 10:02:39 下午
引用自: markwu
所以Oscar 的方式還比較好喔。
var myField = document.getElementById( "commentText" );
他是用 DOM 結構來找 commetText 這個物件,所以不管 form 的名稱是 XX 還是 YY ,他都可以找到。
用 我原來的方法,反而可能找不到。
Mark


雖然Oscar 的方式能夠避免命名不同的問題
可是我親身操作的結果只有Standard模版能夠在firefox下正常運作
所以只好將每個模版都改成NewComment
工程浩大,不過改成Mark 前輩你的方法才能讓firefox運作正常
也不知道是那個環節的問題


主題: [問題]smileys在firefox下沒作用?
作者: evenrain六月 01, 2005, 09:26:53 上午
引用自: bibicall

雖然Oscar 的方式能夠避免命名不同的問題
可是我親身操作的結果只有Standard模版能夠在firefox下正常運作
所以只好將每個模版都改成NewComment
工程浩大,不過改成Mark 前輩你的方法才能讓firefox運作正常
也不知道是那個環節的問題


那你可能要先確認迴響的 textarea 是不是少了 ID 這個屬性
我剛剛看了一下你前面的回文,似乎只有檢查 Form,
而用 Oscar 的方法,其實是可以不用管 Form 的,
確認一下能不能 Search 到 ID="commetText" 這段文字,
如果沒有的話,就把它加到迴響的 textarea 去

程式碼:

<textarea tabindex="5" id="text" name="commentText" rows="10" cols="40"></textarea>


像我採用的 template 就沒有幫 textarea 加上 ID 的屬性,
所以用 Document.getElementById 當然就找不到,
把它改成

程式碼:

<textarea tabindex="5" id="text" name="commentText" id="commentText" rows="10" cols="40"></textarea>


這樣就可以了


主題: Re: [問題]smileys在firefox下沒作用?
作者: maomaode一月 03, 2006, 05:01:54 下午
虽然是老早前的文章,我又拿出来晒一晒 :-P
引用
<textarea tabindex="5" id="text" name="commentText" id="commentText" rows="10" cols="40"></textarea>

上面的ID其实重复了, 将 id="text" 直接替换为  id="commentText"  就可以了


主題: Re: [問題]smileys在firefox下沒作用?
作者: maomaode一月 04, 2006, 09:17:08 下午
不知道为什么, 显示出来的smiley并不全, 可不可以显示出所有的smiley呢? 或者像SMF的这个文章编辑toolbar一样,有一个【附加】的链接呢?
谢谢!


主題: Re: [問題]smileys在firefox下沒作用?
作者: lisamaus七月 20, 2006, 10:13:13 下午
因為遇到同樣的問題就順便測一下

如果沒有像evenrain講的那樣在textarea上加上id="commentText", code如下:
程式碼:
<textarea [color=Red]id="commentText"[/color] tabindex="5" name="commentText" rows="10" cols="40"></textarea>

那在smileys.js裡就一定要用

程式碼:
var myField = document.NewComment.commentText;
//var myField = document.getElementById( "commentText" );

但是不管在textarea上加不加id="commentText", 在commentform.template裡form的name和id一定都要是NewComment, 不然在firefox下就是沒辦法加入表情符號


主題: Re: [問題]smileys在firefox下沒作用?
作者: evenrain八月 14, 2006, 09:57:37 上午
因為遇到同樣的問題就順便測一下

如果沒有像evenrain講的那樣在textarea上加上id="commentText", code如下:
程式碼:
<textarea [color=Red]id="commentText"[/color] tabindex="5" name="commentText" rows="10" cols="40"></textarea>

那在smileys.js裡就一定要用

程式碼:
var myField = document.NewComment.commentText;
//var myField = document.getElementById( "commentText" );

但是不管在textarea上加不加id="commentText", 在commentform.template裡form的name和id一定都要是NewComment, 不然在firefox下就是沒辦法加入表情符號

其實我比較建議採用 getElementById 的作法,
一來需要修改的部份比較少,
二來,getElementById 是標準寫法,通用性也比較高