Сцепите свой обработчик событий до события mouseDown кнопки (вместо щелчка или события mouseUp). Это позволит Вам захватывать текущий выбор, прежде чем он будет очищен.
Можно поддержать пользовательский опыт путем хранения выбора в переменной и только использования его, если кнопка получает событие щелчка. Как это:
<button onmousedown="sel = window.getSelection()" onclick="alert(sel)">What's the selection?</button>
Первое, что пришло на ум я думаю, что Ваше самое легкое решение состояло бы в том, чтобы присоединить обработчик событий, чтобы написать выбор и сохранить текущий выбор к буферу, этот способ, которым Вы не должны волноваться о синхронизации.
Откройте поджигателя на этой странице и выполните следующий отрывок:
var buffer = '';
$('p').mouseup(function() {
buffer = window.getSelection();
});
Можно затем выбрать то, что Вы хотите и видите последний выделенный текст путем выполнения:
console.log(buffer);
Вуаля, нажмите/отмените выбор решенную проблему синхронизации :)
Я узнал, что множественный выбор программных поддержек Firefox располагается в веб-странице, которая содержит несколько кадров
Черт, Firefox даже поддерживает множественные выборы на единственном кадре! (Попробуйте, перетаскивают щелчок затем ctrl-click-drag на отдельной части текста.)
в Safari я сразу заметил, что, когда я нажимаю на HTML Button, текущий выбор пользовательского текста уходит, как будто нажимание на кнопку изменило местоположение текстового каре
Работы для меня, в Safari 3.2.1 в Windows. При нажатии <кнопка>, <входной тип = "кнопка"> или <a> оставляет выбор, где это, хотя greyed, если это находится в другом кадре. ‘window.getSelection ()’ продолжает работать, как обычно.
Можно ли отправить тестовый сценарий и какая версия Safari заставляет его неправильно себя вести?