我创建一个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事件本身并不能工作在所有情况下。当用户通过直接点击选择,而不是点击网页上的不同部分取消选择文本,range.text仍然包含在selectionchange提高旧的(非空)值。一种解决方法是也监听click事件。 click事件被selectionchange后立即提出,但在这一点range.text终于空。但是,我遇到了,我还没有找到一个解决的另一个问题。也就是说,如果就一个字一个用户双击,从而选择它,SelectionChange事件完全不提高。另外,当单击事件(或鼠标按下事件或选择开始事件)上升,range.text还是空!

如何解决此一问题?或者是有一个整体更好的方法,我可以走?

有帮助吗?

解决方案

尝试使用ondragend事件的简单的选择和用于双击选择onfocus此事件。如果它不工作,试图将一些事件结合起来( http://javascript.gakaa.com/ C / events.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top