backbone 查看和 window.getSelection
backbone view and window.getSelection
我无法让 window.getSelection 在 backbone.js 视图中工作。
否则视图工作正常,但每当我 select 一些文本,然后单击触发 window.getSelection 函数的测试按钮时,selection 总是显示为空。
我认为这可能与我的视图以及视图附加到页面的方式有关。
这是我的测试代码:
return Backbone.View.extend({
tagName: 'div',
className: 'test',
template: _.template(tmpl, null, { }),
events: {
"click .testSelection": "testSelection"
},
initialize: {...}
render: {...}
testSelection: function () {
if (window.getSelection) {
console.log('selection range: ', document.getSelection().toString());
}
}
});
无论我 select,我总是在控制台中得到这个:
select离子范围:(空串)
有什么技巧可以让它在 backbone.js 中工作吗?
谢谢!
@adeneo 是对的。一旦你点击了,你就有效地破坏了选择范围。尽管如此,有一个简单的解决方法可以解决您的问题:保存原始选择。只需调整以下属性:
events: {
"mouseup": "testSelection",
"click .testSelection": "getSelection"
},
testSelection: function () {
this.currentSelection = window.getSelection();
},
getSelection: function() {
console.log(this.currentSelection.toString());
}
这里的关键是保存选择。您可以稍后使用它做任何您想做的事情(比如在 <button>
单击时在控制台中显示它)。
注意 我将我们的视图设置为在视图中 mouseup
anywhere 收听。如果您只关心一个特定的 <element>
(或元素范围,如视图中的所有 <p>
),我会使用该元素。
您还可以查看正在运行的 fiddle。
(感谢@nikoshr 提供了基础 fiddle)
我无法让 window.getSelection 在 backbone.js 视图中工作。
否则视图工作正常,但每当我 select 一些文本,然后单击触发 window.getSelection 函数的测试按钮时,selection 总是显示为空。
我认为这可能与我的视图以及视图附加到页面的方式有关。
这是我的测试代码:
return Backbone.View.extend({
tagName: 'div',
className: 'test',
template: _.template(tmpl, null, { }),
events: {
"click .testSelection": "testSelection"
},
initialize: {...}
render: {...}
testSelection: function () {
if (window.getSelection) {
console.log('selection range: ', document.getSelection().toString());
}
}
});
无论我 select,我总是在控制台中得到这个:
select离子范围:(空串)
有什么技巧可以让它在 backbone.js 中工作吗?
谢谢!
@adeneo 是对的。一旦你点击了,你就有效地破坏了选择范围。尽管如此,有一个简单的解决方法可以解决您的问题:保存原始选择。只需调整以下属性:
events: {
"mouseup": "testSelection",
"click .testSelection": "getSelection"
},
testSelection: function () {
this.currentSelection = window.getSelection();
},
getSelection: function() {
console.log(this.currentSelection.toString());
}
这里的关键是保存选择。您可以稍后使用它做任何您想做的事情(比如在 <button>
单击时在控制台中显示它)。
注意 我将我们的视图设置为在视图中 mouseup
anywhere 收听。如果您只关心一个特定的 <element>
(或元素范围,如视图中的所有 <p>
),我会使用该元素。
您还可以查看正在运行的 fiddle。 (感谢@nikoshr 提供了基础 fiddle)