我试图在单击按钮时获取用户在文本输入中选择的文本。这就是我正在尝试的:
<head>
<script type="text/javascript">
function GetSelectedText () {
if (window.getSelection) { // all browsers, except IE before version 9
var range = window.getSelection ();
alert (range.toString ());
}
else {
if (document.selection.createRange) { // Internet Explorer
document.getElementById("foo").focus();
var range = document.selection.createRange();
alert (range.text);
}
}
}
</script>
</head>
<body>
<button onclick="GetSelectedText ()">Get the selected text!</button>
<input type = 'text' id = 'foo' />12345
</body>
它在除 IE9
之外的所有浏览器中都能按预期工作。在 IE9
中,如果您从 12345
block 中选择一些文本并按下按钮,则所选文本会收到警报。但是,如果您在文本输入中键入内容,选择其中一些内容,然后单击按钮,则会生成空白警报。
谁能告诉我如何让它在 IE9
中工作?有没有办法获得选择开始的光标位置(类似于 Mozilla 的 selectionStart
)?我正在寻找 Javascript 解决方案,没有 Rangy
或其他相关的 jQuery 库..
最佳答案
文本输入和文本区域具有单独的选择 API,即输入本身的 selectionStart
和 selectionEnd
属性。 IE <= 8 不支持这些,但您已经有了替代方案。
以下是适用于所有主要浏览器的 GetSelectedText()
函数的实现:
代码:
function GetSelectedText() {
var selectedText = "";
var input = document.getElementById("foo");
var sel, val = input.value;
input.focus();
if (typeof input.selectionStart == "number") {
selectedText = val.slice(input.selectionStart, input.selectionEnd);
} else if ( (sel = document.selection) && sel.createRange) { // IE
var range = document.selection.createRange();
selectedText = range.text;
}
alert(selectedText);
}
关于javascript - 文本输入选择在 IE9 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075481/