我想创建一个Jscript,然后将其粘贴到Google Chrome Consol,它应该将元素的innerHTML部分复制到剪贴板。 这应该在很长一段时间内完成。
到目前为止,我设法编写了一个从0到9循环的代码,调用了将内容复制到剪贴板,然后休眠1秒钟的函数。它还将循环数和数据本身写入控制台。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function mycopy() {
var copy = function (e) {
e.preventDefault();
var text = document.getElementsByClassName("md-tile")[0].innerHTML
text = text.substring(0,10)
console.log(text);
if (e.clipboardData) {
e.clipboardData.setData('text/plain', text);
} else if (window.clipboardData) {
window.clipboardData.setData('Text', text);
}
};
window.addEventListener('copy', copy);
document.execCommand('copy');
window.removeEventListener('copy', copy);
}
var text = "a"
for (let XYZ = 0; XYZ < 10; XYZ++) {
console.log('copy' + XYZ + ' Sec');
text = ""
mycopy();
await sleep(1000);
}
console.log('Done');
据我所知,上述脚本应该 复制该类为“ md-title”的第一个元素的内部HTML。
但是它将在5秒钟后完全停止复制。 (如果更改睡眠时间,仍然是5秒。)
这是控制台中的响应:
copy0秒
div类
copy1秒
div类
copy2秒
div类
copy3秒
div类
copy4秒
div类
copy5秒
copy6秒
copy7秒
copy8秒
copy9秒
完成
有什么办法解决这个问题吗? 5秒后到达剪贴板是否有时间限制? 是镀铬的限制,还是Windows(7)?
答案 0 :(得分:0)
所以最后我设法解决了我的问题,但是我无法使用剪贴板,因为我们在5秒钟后失去了对剪贴板的访问权限。
我的解决方案是我将HTML部分下载为txt。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + text);
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
for (let XYZ = 0; XYZ < 10; XYZ++) {
var text0 = document.getElementById('lastUpdate').innerHTML
download("DialogLiveLogTime.txt",text0);
await sleep(2000);
console.log('Round: ' + XYZ)
}
使用上述代码,Google chrome将下载内部HTML作为txt文件。最初,这会弹出一个“另存为”窗口,但是您可以在Chrome选项菜单中将其关闭,也可以在此处设置目标位置。 同时,明智的做法是,以相同的频率或在读取后使用不同的脚本删除下载的日志。