1

我創建一個IE瀏覽器插件,它需要不斷更新關於由用戶選擇了什麼樣的文本檢索選定的文本,如果沒有文本,目前在所有被選擇。我學會了如何通過reading here獲得選定的文本。這是我這樣做代碼:問題從IE瀏覽器

 
var doc = browser.Document as IHTMLDocument2; 
var selection = doc.selection as IHTMLSelectionObject; 
var range = selection.createRange() as IHTMLTxtRange; 
string selectedText = range.text; 

不過,我難以決定該事件處理程序(一個或多個),從該訪問range.text更新我的插件。在所有情況下,單獨使用selectionchange事件都不起作用。當用戶通過直接點擊選擇來取消選擇文本時,與點擊網頁的不同部分相反,當引發selectionchange時,range.text仍包含舊(非空)值。解決方法是也監聽點擊事件。點擊事件在selectionchange後立即產生,但是range.text最終爲null。但是,我遇到了另一個問題,我還沒有找到解決方案。也就是說,如果用戶雙擊單詞並選擇它,那麼selectionchange事件根本不會被引發。另外,當引發click事件(或mousedown事件或selectstart事件)時,range.text仍然爲空!

我該如何解決後一個問題?或者我可以採取一種更好的整體方法?

回答

1

嘗試使用ondragend事件爲簡單的選擇,爲雙擊選擇onfocus此事件。如果它不工作,試圖將一些事件(http://javascript.gakaa.com/c/events.aspx

+0

結合使用DblClick事件解決的單字雙擊選擇的問題。感謝您指出這一事件 - 我沒有注意到這可能是由於缺少元音。有人在微軟的鍵盤顯然壞了。至於拖曳事件,它實際上並不適用,因爲拖曳選擇不是DnD操作。因此,現在在我的程序中,我只是將所有三個事件 - selectionchange,click和dblclick - 都傳遞給保存range.text值的同一處理程序。 – HappyNomad 2009-08-26 11:07:24