gpt4 book ai didi

javascript - 打开 jQuery 对话框时如何保留文本选择

转载 作者:行者123 更新时间:2023-11-28 00:31:08 25 4
gpt4 key购买 nike

使用 jQuery 的对话框我遇到了以下怪癖(在 FF3 中测试):

  1. 用户选择文本
  2. 在代码中,打开一个 jQuery 对话框
  3. 错误:文本未被选中

(文本可以在文本区域中,也可以只是页面上的 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!

谢谢!

最佳答案

jQuery 对话框将吸引用户的注意力(您应该会看到在对话框中选择的按钮之一)。浏览器只有 1 个焦点,因此您会丢失他们选择的任何内容。

您应该在执行对话框之前检索用户选择的开始和结束位置,然后在对话框消失后重新选择它。

我没有任何用于获取和设置用户选择的示例代码,但网络搜索应该可以找到一些代码。

类似的东西:

$("dialog").focus(function() {
// save the selection
}).blur(function() {
// set the text selection
});

[编辑(尼古拉):见Keep text selection when focus changes更多代码]

关于javascript - 打开 jQuery 对话框时如何保留文本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/824833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com