gpt4 book ai didi

Javascript:选择文本以复制 HTML 文档中的所有相似元素

转载 作者:行者123 更新时间:2023-11-28 01:03:13 27 4
gpt4 key购买 nike

在 stackoverflow 和其他网站上发布了很多与选择 ONE 元素文本以便可复制的方式相关的文章。

但我还没有找到一个函数可以选择并突出显示 HTML 文档中所有个相似元素的文本。例如,从所有 h2 标题中选择文本。

我试图从这个thread修改函数选择一个元素。

选择一个元素函数

jQuery.fn.selectText = function(){
var doc = document;
var element = this[0];
console.log(this, element);
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};

这是上述函数的修改版本,它执行所有相似元素的选择。

$.fn.selectTextAll = function() {
var doc = document,
numElem = this.length,
elements = this;

if(doc.body.createTextRange) {
for(i=0; i<numElem; i++) {
var range = document.body.createTextRange();
range.moveToElementText(elements[i]);
range.select();
}
}
else if(window.getSelection) {
var selection = window.getSelection();
selection.removeAllRanges();
for(i=0; i<numElem; i++) {
var range = document.createRange();
range.selectNodeContents(elements[i]);
selection.addRange(range);
}
}
};

问题是上述功能在Firefox中可以正常工作,但在其他浏览器、Chrome、Safari、Opera、IE+9中都不能正常工作。

为了确认这一点,您可以打开this fiddle在所有浏览器中。它仅在 Firefox 中工作。

谁能给出解决方案吗?

感谢您的宝贵时间

最佳答案

经过大量研究,我发现无论我一直试图做什么都是不可能的。

实际上,这称为多范围选择仅 Firefox 支持

以下文章中有一些关于此的有趣信息:

1) https://bugzilla.mozilla.org/show_bug.cgi?id=753718#c0

2) https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html阅读以最初,选择

开头的 注释

您可以在那里看到,除 Firefox 之外,其他浏览器不提供此功能,并且在不久的将来不太可能添加。


此外,stackoverflow 中有时也讨论了这个问题。示例:

Is there a way selecting MULTIPLE areas of text with JS in Chrome and/or IE?

Non-continuous selections in chrome?


对于重复内容,我们深表歉意,并感谢为此花费时间的人们。

关于Javascript:选择文本以复制 HTML 文档中的所有相似元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25387430/

27 4 0
文章推荐: javascript - 精度较低的 GeoJSON
文章推荐: javascript - 如何使用 JQuery Mobile 为 ajax-fill