在与jQuery UI对话框和文本输入交互时保留满意的文本选择

我有一个jQuery对话框,用于在contentEditable span中创建链接。 问题是单击按钮打开对话框会导致选择丢失,对话框内的文本输入也会导致选择丢失。

我可以用-moz-user-select:none修复按钮; 但是-webkit-user-select:none在Chrome中不起作用。

我可以通过将输入包装在iframe中来修复输入,但是这很麻烦并且点击任何其他地方也会杀死选择,例如,拖动对话框。

我已经看到了如何在打开jQuery对话框时保留文本选择的解决方案,但这在许多浏览器中不适用于一个可信的元素,只有真正的输入。

我的问题有一个很好的解决方案吗?

打开和关闭对话框时,可以使用以下简单function保存和恢复选择。 我对jQuery对话框不太熟悉,无法知道挂钩对话框打开和关闭的机制。 第一个, saveSelection ,返回一个RangeTextRange对象,您应该将该对象存储在稍后传递给restoreSelection的变量中:

 function saveSelection() { if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { return sel.getRangeAt(0); } } else if (document.selection && document.selection.createRange) { return document.selection.createRange(); } return null; } function restoreSelection(range) { if (range) { if (window.getSelection) { sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (document.selection && range.select) { range.select(); } } }