getSelection()在IE中不起作用

Ale*_*lex 22 javascript jquery internet-explorer

有人可以帮助我在IE中使用此代码吗:

HTML:

<p>Alex Thomas</p>
<button id="click">Click</button>
Run Code Online (Sandbox Code Playgroud)

JS

$('#click').click(function(){
    var range = window.getSelection().getRangeAt(0);
    var selectionContents = range.extractContents();
    var span = document.createElement("span");
    span.style.color = "red";
    span.appendChild(selectionContents);
    range.insertNode(span);
});
Run Code Online (Sandbox Code Playgroud)

编码在这里:http://jsfiddle.net/WdrC2/

提前致谢...

Eli*_*ing 24

IE之前的IE不支持window.getSelection().您可以document.selection改为使用(有关说明,请参阅此msdn页面).此选择对象有一个createRange()返回对象的方法TextRange(有关详细信息,请参阅此msdn页面).

请注意,这些selectiontextrange对象都是微软自己实现的,并且不遵循W3C标准.你可以阅读更多关于textrangerange问题上www.quirksmode.org/dom/range_intro.html.

以下实现在IE中有效:

$('#click').click(function(){
    var range = document.selection.createRange();
    range.pasteHTML("<span style='color: red'>" + range.htmlText + "</span>");
});
Run Code Online (Sandbox Code Playgroud)

它不像其他实现那么好,因为你必须使用字符串而不是dom.有一个hack你粘贴<span id="myUniqueId"></span>占位符,然后用dom替换它.你仍然有工作range.htmlTextrange.text虽然.

BTW:上面的实现显然只是IE.您必须使用某些浏览器功能检测来确定要使用的版本.