我使用这个简单的Javascript代码来检索在网页上选择的文字:
var userselection = window.getSelection(); //user selection will be a Selection-Object
var rangeObject = userselection.getRangeAt(0);
如果选择了文本,代码可以正常工作。如果我只是单击可以选择的文本,我也会得到一个范围对象,它会按预期折叠。
但如果我不选择也不点击,Firefox会抛出此错误:
uncaught exception: [Exception... "Component returned failure code: 0x80070057
(NS_ERROR_ILLEGAL_VALUE) [nsISelection.getRangeAt]" nsresult: "0x80070057
(NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: file:///home/jan/Webprojekte/test-range
selection.html# :: who :: line 16" data: no]
是否有一种干净的方法可以防止错误,但仍然会通知用户没有选择任何文字?
答案 0 :(得分:8)
是:首先检查选择的rangeCount
属性。如果为零,请不要拨打getRangeAt()
。
答案 1 :(得分:2)
我遇到了同样的问题。但在我的情况下,我有rangeCount等于1.偶然我发现这种方式来解决问题
你需要设置超时功能然后一切顺利
setTimeout(function(){
var userselection = window.getSelection(); //user selection will be a Selection-Object
var rangeObject = userselection.getRangeAt(0);
},100)