문제

사용자가 선택한 텍스트에 대해 또는 현재 텍스트가 선택되지 않은 경우 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는 여전히 선택 체인을 올릴 때 이전 (널) 값을 포함합니다. 해결 방법은 클릭 이벤트를 듣는 것입니다. 클릭 이벤트는 선택 사항 직후에 제기되지만 그 지점에서 텍스트는 최종적으로 null입니다. 그러나 솔루션을 찾지 못하는 또 다른 문제가 발생했습니다. 즉, 사용자가 단어를 두 번 클릭하여 선택하면 선택 체인지 이벤트가 전혀 제기되지 않습니다. 또한 클릭 이벤트 (또는 Mousedown 이벤트 또는 SelectStart 이벤트)가 올라가면 Range.Text는 여전히 NULL입니다!

이 후자의 문제를 어떻게 해결할 수 있습니까? 아니면 내가 취할 수있는 전반적인 더 나은 접근 방식이 있습니까?

도움이 되었습니까?

해결책

간단한 선택과 Double Click 선택의 경우 Ondragend 이벤트를 사용하여 OndBlClick 이벤트를 사용하십시오. 작동하지 않으면 일부 이벤트를 결합하려고합니다 (http://javaScript.gakaa.com/c/events.aspx)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top