搜索网络让我找到了Selection.addRange() is deprecated and will be removed from Chrome
但这有点太宽泛了。我收到此错误是因为我在我的项目中包含了一些 Bootstrap 。现在对我来说“范围”意味着[从A到Z]或[从开始到结束]
阅读上面发布的帖子告诉我解决问题的技巧是在 addRange(..);
之前调用 removeAllRanges();
但阅读remove所有范围让我建议可以添加几个范围或值。
我尝试在两者之间添加 removeAllRanges();
,它给我带来了更多错误,因为如果我添加一个范围(开始),我必须添加第二个范围(结束)。
其实它不是一个范围,更多的是在addRange
中设置的参数。
这是导致问题的一些 Bootstrap 生成文件中的代码
(function() {
var iframe = document.createElement("iframe");
body.appendChild(iframe);
var iframeDoc = dom.getIframeDocument(iframe);
iframeDoc.open();
iframeDoc.write("<html><head></head><body>12</body></html>");
iframeDoc.close();
var sel = dom.getIframeWindow(iframe).getSelection();
var docEl = iframeDoc.documentElement;
var iframeBody = docEl.lastChild, textNode = iframeBody.firstChild;
// Test whether the native selection will allow a collapsed selection within a non-editable element
var r1 = iframeDoc.createRange();
r1.setStart(textNode, 1);
r1.collapse(true);
sel.addRange(r1);
collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1);
sel.removeAllRanges();
// Test whether the native selection is capable of supporting multiple ranges
var r2 = r1.cloneRange();
r1.setStart(textNode, 0);
r2.setEnd(textNode, 2);
sel.addRange(r1);
sel.addRange(r2);
selectionSupportsMultipleRanges = (sel.rangeCount == 2);
// Clean up
r1.detach();
r2.detach();
body.removeChild(iframe);
})();
这里的问题部分是
sel.removeAllRanges();
var r2 = r1.cloneRange();
r1.setStart(textNode, 0);
r2.setEnd(textNode, 2);
sel.addRange(r1);
sel.addRange(r2); //<<============ HERE
当然我需要第二个范围来让
selectionSupportsMultipleRanges = (sel.rangeCount == 2);
工作!
我该如何解决这个问题?
有没有办法添加实际范围而不仅仅是开始参数?
最佳答案
如果你想要一个范围(从开始到结束),你可以这样做:
let range = document.createRange()
range.setStart(r1);
range.setEnd(r2);
let range2 ....
let sel = window.getSelection()
selection.removeAllRanges();
selection.addRange(range);
selection.addRange(range2);
....
我会看这里:
https://developer.mozilla.org/en-US/docs/Web/API/Range https://developer.mozilla.org/en-US/docs/Web/API/Selection/addRange
有关范围的更多信息。
希望这能回答您的问题(即使已经晚了)。
关于javascript - Selection.addRange() 已弃用 - 如何解决错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104718/