6

我目前爲Firefox添加了一個附加組件,它爲實現自己的標記語言的論壇網站添加了許多功能,類似於使用「Markdown」提供的stackoverflow。在JavaScript中構建智能感知/自動完成

我爲這個附件構建了一個IntelliSense函數,它類似於Visual Studio,在textarea中輸入這個標記時會彈出一個自動建議。例如:在一個textarea按鍵的

http://members.lycos.co.uk/suffusion/namfox/faq-1.5/autocomplete-example-2-1.jpg

關於執行最難的事情是找到(X,Y)座標,所以我可以彈出的窗口的IntelliSense非常接近它。 JavaScript中的按鍵事件不會公開這些座標,所以我不得不解決這個問題。不幸的是,我只能找到一個跨瀏覽器兼容的方式來獲得y座標,而不是x座標。這個代碼位於_getPopupPoint函數中的here

這適用於Firefox,因爲我使用一些Mozilla的XPCOM接口來獲取座標。所以,雖然這適用於Firefox,但現在我想將我的插件移植到Google Chrome,但我無法找到獲取座標的方法。

所以我問的是雙重的: (1)有沒有更好的方法來獲得按鍵的x座標? (2)如果不是,我可以在Chrome瀏覽器插件的上下文中獲得相同的數據嗎?

+1

+1因爲發佈代碼,爲了讓你附上圖片 – elcuco 2009-11-28 18:03:54

+0

謝謝!剛發佈圖片。 – 2009-11-28 20:31:26

回答

0

它對於檢查event object in DOJO toolkit的實施感興趣。

Dojo提供與事件對象的以下屬性:

  • event.target - 生成事件
  • event.currentTarget元件 - 當前目標
  • event.layerX - x座標,相對於事件。currentTarget
  • event.layerY - y座標,相對於event.currentTarget
  • event.pageX - 相對於視圖端口的x座標
  • event.pageY - y座標,相對於觀察口
  • event.relatedTarget - 對於的onmouseover和onmouseout,該對象將鼠標指針移動到或離開
  • event.charCode的 - 對於按鍵事件,按下的鍵的字符代碼
  • event.keyCode - 用於按鍵事件,處理特殊鍵,如ENTER和空格鍵。
  • event.charOrCode - charCode和keyCode的標準化版本,可用於直接比較字母鍵和特殊鍵。 (在1.1中添加)
+0

傳遞給按鍵事件偵聽器的普通KeyboardEvent也具有大部分這些屬性,但layerX/layerY和pageX/pageY屬性爲0。我剛剛嘗試過Dojo,而且這些屬性也保持在0. – 2009-11-28 20:30:56

1

window.getSelection和相關的方法可能是你正在尋找的。您可以使用偏移等功能計算插入符號的屏幕位置。

+0

這看起來接近我想要的。但是,anchorOffset和focusOffset屬性在每個換行符開始時重置爲0。這意味着如果用戶鍵入段落,我無法準確找到x座標,因爲段落跨越文本區域中的多行。 – 2009-12-09 16:30:38

相關問題