MozTW 討論區 https://forum.moztw.org/ |
|
[問題]prototype.js在Opera上的奇異行為 https://forum.moztw.org/viewtopic.php?f=13&t=20341 |
第 1 頁 (共 1 頁) |
發表人: | legnaleurc [ 2007-09-14, 18:06 ] |
文章主題 : | [問題]prototype.js在Opera上的奇異行為 |
範例 我在IE6,Firefox2,Konqueror上都測過 它對Element擴充的replace可以正常運作 但是在Opera9.23上 replace卻失效了 而且它的type竟然是String 有趣的是其他的擴充功能是正常的 這是哪一方的BUG呢? |
發表人: | kourge [ 2007-09-16, 04:14 ] |
文章主題 : | |
奇怪,可是在你的網頁上,我用 Opera 測試 $('main').replace('blah') 卻是可以用呀? |
發表人: | legnaleurc [ 2007-09-16, 10:29 ] |
文章主題 : | |
那在observe裡使用bind可以正常運作嗎? 或是在我列出的物件裡,replace有正常嗎? 因為Element.replace在Opera上時好時壞,而且原因不明 所以才說是奇特行為 |
發表人: | kourge [ 2007-09-17, 01:35 ] |
文章主題 : | |
你是如何 bind function 會讓它不正常?有時候 bind 是很灰色地帶的東西><" 假設: 代碼: <div id="test">Test</div> var Blah = { str: "bling", go: function(e) { } }; $('test').observe('test', Blah.go.bindAsEventListener()); 這時在 Blah.go 內,this 會變成 window,必須: Blah.go.bindAsEventListener(Blah) Blah.go 的 this 才會指到 Blah。那原來發動這個事件的元素怎麼辦?因為用 bindAsEventListener,所以 e 會是被發動的 event,所以: 代碼: go: function(e) {
var element = $(Event.element(e)); element.replace('blah'); } |
發表人: | legnaleurc [ 2007-09-17, 12:51 ] |
文章主題 : | |
我現在把問題簡化一點好了 實作 只看listen這個全域函式 然後只列出replace和stopObserving這兩個function的內容 不使用Function的bind 在Opera上stopObserving有反應 但replace雖有定義卻會變成空字串 不管是直接指定觸發事件的元素的名稱 或是使用bind使該元素被this參照 其結果都一樣 |
發表人: | kourge [ 2007-09-17, 13:46 ] |
文章主題 : | |
那...如果把 element 用 $() 或 Element.extend() 再包一次呢? |
發表人: | legnaleurc [ 2007-09-17, 14:04 ] |
文章主題 : | |
殘念,還是失敗 真的是莫名其妙.... |
發表人: | kourge [ 2007-09-18, 13:39 ] |
文章主題 : | |
真是怪了... |
發表人: | legnaleurc [ 2007-09-18, 16:14 ] |
文章主題 : | |
想搞清楚的是 到底是我的寫法不嚴謹(剛剛想到在刪除一個node之前是不是要先stopObserving) 還是prototype的問題 或是根本就是Opera的bug? 之前Google的時候沒發現有類似的問題 |
發表人: | kourge [ 2007-09-22, 13:07 ] |
文章主題 : | |
legnaleurc 寫: 想搞清楚的是
到底是我的寫法不嚴謹(剛剛想到在刪除一個node之前是不是要先stopObserving) 還是prototype的問題 或是根本就是Opera的bug? 之前Google的時候沒發現有類似的問題 我發現 remove() 有個有趣的現象...就是移除一個元素以後還會把它 return 回來... 至於 stopObserving...試試看吧XD Prototype 的 trac 好像沒有: http://dev.rubyonrails.org/search?q=ope ... &ticket=on |
發表人: | legnaleurc [ 2007-09-24, 21:21 ] |
文章主題 : | |
好像是在each底下的element開始 replace就被Opera當成unknown code了 大概只能用remove + Insertion了吧 |
發表人: | kourge [ 2007-09-25, 13:57 ] |
文章主題 : | |
以往我都是先 Insertion 再 remove...話說 Prototype 1.6 有新的 insert API。 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |