Вам нужно вызвать toString()
на getSelection()
. Я обновил вашу скрипку , чтобы вести себя так, как вы ожидаете.
var selection;
$('p').bind('mouseup', function() {
selection = window.getSelection().toString();
});
$('input').bind('focus', function() {
this.value = selection;
console.log(selection);
});
См. Демонстрацию
EDIT:
Причина, по которой вы не получаете правильный узел привязки, заключается в том, что объект DOMSelection
передается по ссылке, и когда вы фокусируете внимание на входе, выборка очищается, возвращая, таким образом, значения по умолчанию выбора, соответствующие отсутствию выбора. Один из способов обойти это - клонировать свойства DOMSelection
для объекта и ссылаться на него. У вас больше не будет прототипных DOMSelection
методов, но в зависимости от того, что вы хотите сделать, этого может быть достаточно.
var selection, clone;
$('p').bind('mouseup', function() {
selection = window.getSelection();
clone = {};
for (var p in selection) {
if (selection.hasOwnProperty(p)) {
clone[p] = selection[p];
}
}
});
$('input').bind('focus', function() {
console.dir(clone);
});
См. Демонстрацию