edge
// 定义变量A为null(表示空)let A = null;
// 使用Promise来进行定时循环操作,并确保A的值被正确设置
function loopAndFindElement(max) {
return new Promise((resolve) => {
(function checkElements(i) {
// 如果已经找到了元素,则不再继续循环
if (A === true) {
resolve();
return;
}
// 如果循环次数达到最大值且未找到元素,设置A为假并结束
if (i >= max) {
A = false;
console.log("循环结束,未找到目标元素。");
resolve();
return;
}
// 遍历页面中的所有元素(这里以p标签为例,你可以根据需要调整选择器)
const elements = document.querySelectorAll('p'); // 也可以使用更具体的选择器
for (const element of elements) {
// 检查元素的文本内容是否等于"测试"
if (element.textContent.trim() === "测试") {
// 找到元素后执行点击操作
element.click();
// 设置A为真
A = true;
console.log("找到了元素并已点击。");
// 立即退出函数
resolve();
return;
}
}
// 如果没有找到元素,等待1秒再进行下一次循环
setTimeout(() => checkElements(i + 1), 1000);
})(0); // 立即执行函数,从第0次开始
});
}
// 开始循环,总共进行10次尝试
loopAndFindElement(10).then(() => {
// 所有循环尝试完成后,输出变量A
console.log("最终变量A的值为:", A);
A;
});
控制台是没问题的,A false但是异步提交js返回结果是空因为不能用循环?还是什么原因
// 注意:这段代码应该在浏览器环境中运行,例如通过浏览器的开发者工具控制台。
其实已经执行了.只是你EDGE没有监控控制台消息,所以导致没办法看到在火山输出而已....
用这个 window.chrome.webview.postMessage(A);
window.chrome.webview.postMessage("最终变量A的值为:"+A);就可以输出了
Edge浏览框_收到信息 接收事件 这里如果是购买了 实战的收费课程 看看CDP协议那几课 揰掵佲 发表于 2024-12-22 08:35
其实已经执行了.只是你EDGE没有监控控制台消息,所以导致没办法看到在火山输出而已....
感觉还是不能加循环之类的还没运行完 就收到消息了 sgstvbdy 发表于 2024-12-22 18:54
感觉还是不能加循环之类的还没运行完 就收到消息了
循环无所谓的 异步 最后还是会反馈结果的,
我说的不是 运行JS_异步 是 指自己写的JS代码的异步
页:
[1]