我正在编写一个脚本,当您按“ CTRL + ALT + V”时,它将在特定网站上找到特定的跨度元素。它从元素的值创建一个字符串,删除该字符串的一部分,然后将该值复制到剪贴板。
我一直在搜索有关如何复制到剪贴板并使用 .replace()剥离字符串的一部分的不同示例。我整理了一个脚本,但无法正常工作。
这是使用正确的组合键时启动的功能:
function getVNR() {
let list = document.getElementsByClassName("modelnr");
for (i = 0; i < list.length; i++) {
console.log(list[i]);
}
let vrn = list[1];
return vrn;
}
在每个页面上,只有两个<< strong> span >类别为“ modelnr”,因此我总是得到正确的元素。返回 vrn 后,它将其发送到 copyText 函数:
function copyText(element) {
var range, selection, worked;
if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
}
else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
try {
document.execCommand('copy');
alert('text copied');
}
catch (err) {
alert('unable to copy text');
}
}
例如,这将给我“Vörunúmer:WA SF114-32-P3VU”或“Vörunúmer:CDDE LI ES1 BK” 问题是它不会删除我想从字符串中删除的部分。我试图从这样的字符串中删除:
let vrn = list[1];
vrn = vrn.toString().replace('Vörunúmer: ', '');
return vrn;
并编辑 copyText 函数,如下所示:
function copyText(element) {
let range, selection, worked;
let el = document.createElement('vorunumer');
el.value = element;
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
}
else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
try {
document.execCommand('copy');
alert('text copied');
}
catch (err) {
alert('unable to copy text');
}
document.body.removeChild(el);
}
当我像这样运行脚本时,它不会复制任何内容。我对javascript不太熟悉,因此如果有人可以帮助我解决这个问题并向我解释它的工作原理,我将不胜感激。