今天周日,搞定了家里装修的一件事情,周末的事特别多,总算在10点的时候,解决了昨天那个输入焦点设置失败的问题。
在探索Rust编写基于web_sys的WebAssembly编辑器:挑战输入光标定位的实践中,我们总结了设置光标的位置:
selection.remove_all_ranges().unwrap();
selection.add_range(&range);
let div = get_div_element(&e).expect("get div");
range.set_start(&div.first_child().expect("get first child"), pos);
range.set_end(&div.first_child().expect("get first child"), pos);
div.focus();
如果我们在设置光标前,在通过代码的方式增加了节点,比如从<p>hello</p>
改为<p><strong>hello</strong></p>
。这个时候,输入焦点的设置就会失效。
解决的方法:
- div对象要重新生成
- range对象要重新生成
- node对象要取到text这一级
今天有点晚了,明天我再整理一下代码,将具体的代码补上。
谢谢大家的关注,欢迎留言讨论。