MozTW 討論區 https://forum.moztw.org/ |
|
this跟create event的兩個問題 煩請幫忙 https://forum.moztw.org/viewtopic.php?f=11&t=28145 |
第 1 頁 (共 1 頁) |
發表人: | stellvia7 [ 2009-09-30, 09:42 ] |
文章主題 : | this跟create event的兩個問題 煩請幫忙 |
(一) 當我alert(this) 會出現 object XULElement 告訴我這是一個xul的object. 但是要怎麼知道這是xul element中的那一種物件 像是event我可以 alert(event.type) 來得知這是那一種event 相對的應該有方法知道這是那一種物件吧 this.name?? 但是是undefined (二) var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 1, null); var cb = document.getElementById("content"); //cb.dispatchEvent(evt); //cb.contentWindow.dispatchEvent(evt); //window.content.document.defaultView.dispatchEvent(evt); 上面的code是我想要在視窗中送出模擬中鍵的event但是總是失敗 應該是我dispatchEvent的地方有錯 可是也找不到解答 以上兩個問題 感恩~~~ |
發表人: | stellvia7 [ 2009-09-30, 11:06 ] |
文章主題 : | Re: this跟create event的兩個問題 煩請幫忙 |
var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 1, null); var cb = document.getElementById("content"); cb.dispatchEvent(evt); 說錯關於 dispatchEvent 的地方似乎沒有錯 因為我開啟autoscrolling mode 再來在視窗上面按中鍵會出現 autoscrolling 的icon 然後就可以移動網頁的位置 之後我將 dispatchEvent 每隔2秒自動dispatch一次 , 再開啟autoscrolling mode出現icon後 過兩秒後會因為收到中鍵的event 那個icon就位自動消失 autonscrolling mode也會取消 問題是為啥可以取消mode 卻不能以送event的方式開啟autoscrolling mode?? |
發表人: | stellvia7 [ 2009-09-30, 11:08 ] |
文章主題 : | Re: this跟create event的兩個問題 煩請幫忙 |
...還是dispatch的地方有問題?? 因為我在錯誤的地方dispatch event?? 然後之所以會取消autoscrolling mode 是因為不論在哪裡按中鍵都都會取消 mode 而要開啟autoscrolling mode是要再正確的地方dispatch...?? |
發表人: | cwchien [ 2009-09-30, 22:50 ] |
文章主題 : | Re: this跟create event的兩個問題 煩請幫忙 |
A1. 以下是 XUL element 通用的屬性 (attribute) 列表 https://developer.mozilla.org/en/XUL_element_attributes 我想 class 這個屬性應該是您要的。 A2. 1. 這是 contentWindow 這個性質 (property) 的說明 https://developer.mozilla.org/en/XUL/Property/contentWindow 請注意 window object in the element 這句 如果寫 cb.contentWindow,取得是 cb 「裡」的視窗物件,cb 是父,視窗是子 若 cb 本身是個 Frame 或 iFrame,這是 OK 的, 但如果要的是包含 cb 的那個視窗,並不能這樣寫 2. 這是 MDC 針對 dispatchEvent 的說明 https://developer.mozilla.org/En/DOM/Element.dispatchEvent 其實百分之八九十大同小異,但請注意: initMouseEvent 的 type 建議改為 click (點擊一次),mousedown是指滑鼠按下後都沒放開 我不知道這會不會是問題的關鍵所在 3. 單就您的程式來說,只是送出中鍵事件, 一旦使用者本身沒將 FX 進階選項的 auto scroll mode 打勾,就算中鍵事件有送出也不會出現 icon 若要用程式開啟 auto scroll mode,得先取得 browser 物件或 tabbrowser 物件 這可利用 getBrowserForDocument 或 getBrowserAtIndex 或 getBrowserForTab 的 method 來達成 然後將其 autoscroll 屬性設為 true,之後再送出中鍵事件即可出現 icon 4. 這是 XUL 說明總表,有物件、屬性、性質、方法等,值得參考 https://developer.mozilla.org/en/XUL_Reference 5. 此外,這種跟程式開發有關的應該到特別議題 -> 程式開發討論區去發問,會比較容易得到回應 擴充套件討論區比較偏向於聊使用面而非開發面 ^ ^" |
發表人: | rz600000 [ 2009-10-01, 10:11 ] |
文章主題 : | Re: this跟create event的兩個問題 煩請幫忙 |
首先 : 感恩樓上 學到很多 但是我現在想要做的是 當user mousedown 超過1秒則自動進入autoscrolling mode 所以我要送一個mouseup 將之前的 mousedown up起來 此時再送一個中鍵mousedown 才會進入autoscrolling mode 但是 ..就是一直辦不到.. 我有去trace browser.xml 裏面有開啟 scrolling mode 的 function startScroll(event); 此function 中有一行 this._scrollingView = event.originalTarget.ownerDocument.defaultView; 我使用 alert(event.originalTaget.nodeName); 會出現html 的標籤如 DIV 之類的 但是假若我自己送中鍵event alert(event.originalTaget.nodeName); 會變成 xul element 所以我覺得我dispatch的地方錯誤了, 再來我想將之前的mousedown 送一個mouseup 這點也一直稿不出來=.= 謝謝~~ 還有可以幫我把文章轉過去嘛...感恩謝謝您 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |