从IE浏览器中检索所选文本的问题

时间:2009-08-25 09:08:00

标签: c# internet-explorer dom javascript-events webbrowser-control

我正在创建一个IE浏览器插件,需要不断更新用户选择的文本,或者当前是否选择了任何文本。我学会了如何通过reading here获取所选文本。这是我的代码:

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仍包含旧的(非null)值。解决方法是也监听点击事件。在selectionchange之后立即引发click事件,但此时range.text最终为null。但是,我遇到了另一个问题,我没有找到解决方案。也就是说,如果用户双击一个单词,从而选择它,则根本不会引发selectionchange事件。另外,当引发click事件(或mousedown事件或selectstart事件)时,range.text仍为null!

如何解决后一个问题?或者我可以采取一种更好的方法吗?

1 个答案:

答案 0 :(得分:1)

尝试使用ondragend事件进行简单选择,并使用ondblclick事件进行双击选择。如果它不起作用,请尝试组合一些事件(http://javascript.gakaa.com/c/events.aspx