我试图存储window.getSelection()的值,但是如果用户选择了另一个选择,这个值似乎会改变。
在下面的代码中,我存储了初始用户的选择。然后我创建我的表单(这需要一些时间),当表单创建完成后,我用用户的选择填写表单。现在,在创建表单期间,用户可以选择一些其他文本,现在存储在我的选择变量中的对象已经改变。如何防止选择的值被更改?
var selection = window.getSelection();
createForm(function() {
fillInForm(selection);
});
编辑 - 我需要保留选择的DOM结构,因为表单引用了所选文本的位置。
答案 0 :(得分:1)
getSelection
函数返回Selection个对象。每个文档只能有一个选择对象,因此如果用户进行新选择,则与选择关联的范围必须更改。
用户代理应该允许用户更改活动文档的选择。如果用户对选择进行任何修改,则用户代理必须创建具有合适开始和结束的新范围,并将选择与此新范围相关联(不修改现有范围)。
[...]
如果用户更改选择或脚本调用addRange(),则必须根据本规范中的其他地方的要求将选择与新范围对象相关联。
http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections