寻求网络带我到Selection.addRange() is deprecated and will be removed from Chrome
但这有点广泛。我得到这个错误,因为我已经在我的项目中包含了一些引导程序。现在对我来说" Range"表示 [从A到Z] 或 [从START到END]
阅读上面发布的帖子告诉我解决问题的方法是致电removeAllRanges();
befor addRange(..);
但是阅读删除所有范围让我建议几个范围或值可以添加。
我试图在其间添加removeAllRanges();
并且它给我带来了更多错误,因为如果我添加一个范围(开始),我必须添加第二个(结束)。
实际上它不是一个范围,它更多是在addRange
中设置的参数。
以下是一些导致问题的引导程序生成文件中的代码
(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);
工作!
我该如何解决这个问题?
有没有办法添加只有一个启动参数的真实范围内的内容?
答案 0 :(得分:0)
如果您想要一个范围(从开始到结束),可以执行以下操作:
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
有关范围的更多信息。
希望这可以回答您的问题(即使是很晚)。