【发布时间】:2009-05-05 13:21:54
【问题描述】:
使用 jQuery 的对话框我遇到了以下怪癖(在 FF3 中测试):
- 用户选择文本
- 在代码中,打开一个 jQuery 对话框
- BUG:文本未被选中
(文本可以在文本区域中,也可以只是页面上的 HTML)
所以,对我来说,这似乎是一个有趣(且令人讨厌)的错误或怪癖,但也许对此有一个很好的解释。 而我最感兴趣的是,打开对话框后如何保留这个文本选择?
这里有一些代码:
function getSelectedText() {
var t;
if (d.getSelection) t = d.getSelection();
else if(d.selection) t = d.selection.createRange();
if (t.text != undefined) t = t.text;
if (!t || t=='') {
var a = d.getElementsByTagName('textarea');
for (var i = 0; i < a.length; ++i) {
if (a[i].selectionStart != undefined && a[i].selectionStart != a[i].selectionEnd) {
t = a[i].value.substring(a[i].selectionStart, a[i].selectionEnd);
break;
}
}
}
return t;
}
$("#dialog").dialog({
autoOpen: false,
bgiframe: false,
height: 60,
width: 80,
modal: false,
show: 'highlight',
title: 'wc'});
alert(getSelectedText()); // Text is here
$("#dialog").dialog("open");
alert(getSelectedText()); // Text is not selected here :( damn!
谢谢!
【问题讨论】:
-
据我所知,这是正常行为。如果您选择文本,然后单击页面上的任何其他位置,则选择消失。
-
这不是点击 - 对话框以编程方式打开(使用 setInterval)并且不涉及点击。
标签: javascript jquery html selection