javascript - 如何修复我在 5 秒后卡住的延迟循环?
问题描述
我想创建一个将粘贴到 Google Chrome 控制台的 Jscript,它应该将元素的 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 Sec
div 类
copy1 Sec
div 类
copy2 Sec
div 类
copy3 Sec
div 类
copy4 Sec
div 类
copy5 Sec
copy6 Sec
copy7 Sec
copy8 Sec
copy9 Sec
Done
有没有办法解决这个问题?5秒后到达剪贴板有时间限制吗?是 chrome 限制,还是 windows (7)?
解决方案
所以最后我设法解决了我的问题,但是我无法使用剪贴板,因为我们在 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)
}
使用上面的代码,谷歌浏览器会将内部 HTML 下载为 txt 文件。最初这会弹出一个“另存为”窗口,但您可以在 Chrome 选项菜单中将其关闭,此外您还可以在那里设置目的地。同时,明智的做法是删除以相同频率或阅读后下载的日志,使用不同的脚本。
推荐阅读
- android - 无法将库模块依赖项添加到动态功能模块
- python - Python:从图像中提取文本
- javascript - 使用javascript删除与对象的另一个键和值对对应的对象数组中的重复项
- python - 使用 pip 安装时出现错误消息但 pip 安装仍然成功
- swift - 自定义规则实现无法使用 SwiftLint
- python - 使用 Pandas 滚动窗口查找最大值,同时保留整行
- javascript - 将按钮的值分配给 vanilla JavaScript 中的变量
- telegram - 触摸后获取与 InlineKeyboardButton 电报机器人相关的消息
- excel - VBA代码根据一个列条目自动复制一行并粘贴到另一张表
- html - 在动态获取的 html 文本中显示链接