李恒道 发表于 2023-11-10 09:51:06

tansuo 发表于 2023-11-10 09:01
monitorDomChange()除了这个代码其它代码都是全的,应该没有

把ready用addeventlistener替换一下试试

tansuo 发表于 2023-11-10 13:16:47

本帖最后由 tansuo 于 2023-11-10 14:35 编辑

李恒道 发表于 2023-11-10 09:51
把ready用addeventlistener替换一下试试
$(document).addEventListener('DOMContentLoaded', async function() {,还是进不去


我用我原来代码调试一下 发现虽然代码运行到模拟点击那几行代码中,但只有当console.log(`Element with ID ${id+"_span"} found.`);和
      console.log(targetElement);循环打印完才执行模拟点击,我把那个monitorDomChange()去除了 直接使用document.querySelector获取模拟点击后id为endText里面的数据,目前没有实现运行到模拟点击那几行代码中立即执行模拟点击,下面是完整代码

// ==UserScript==
// @name         zh
// @match      https:///*
// @grant      GM_registerMenuCommand
// @grant      GM_getValue
// @grant      GM_setValue
// @grant      unsafeWindow
// @run-at       document-start
// ==/UserScript==
var _GM_registerMenuCommand = /* @__PURE__ */ (() => typeof GM_registerMenuCommand != "undefined" ? GM_registerMenuCommand : void 0)();
// 使用GM_registerMenuCommand注册一个新的菜单项
_GM_registerMenuCommand("Start Scraping", startScraping);
function startScraping() {
// 调用你的函数,设置变量为true
myFunction()
}

function myFunction() {
    console.log(1111);
//$(document).addEventListener('DOMContentLoaded', async function() {
   $(document).ready( function(){
      console.log(2222);
    // 获取指定 ID 的元素
    const parentElement = document.getElementById('treeDemo');
    // 获取所有子元素
    const childElements = parentElement.children;
    // 遍历所有子元素
    for (let i = 0; i < childElements.length; i++) {
      // 判断当前元素是否为 li 标签
      if (childElements.tagName === 'LI') {//缺个数组方括号里面有个i
      // 获取 li 标签的 ID 并赋值给 document.getElementById()
      const id = childElements.id;//缺个数组方括号里面有个i
      // 在这里可以执行你需要的操作,例如打印 ID 或其他操作
      console.log(`Element with ID ${id+"_span"} found.`);
      const targetElement = document.getElementById(id + "_span"); // Correct the way to concatenate the string.
      console.log(targetElement);
      // 模拟点击事件
      if (targetElement) {
          const event = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: unsafeWindow,
          });
               setTimeout(() => {
                  //debugger
               targetElement.dispatchEvent(event);
               },5000);
      debugger
      const targetDivSelector = '#endText';
      const targetDiv = document.querySelector(targetDivSelector);
      if (targetDiv) {
          console.log('Found target div:', targetDiv);
          // 在这里可以对目标div进行操作或获取需要的数据
      } else {
          console.log('Target div not found.');
      }

      } else {
          console.log('目标 ul 元素不存在!');
      }
      }
    }
});
}



李恒道 发表于 2023-11-10 20:17:53

tansuo 发表于 2023-11-10 13:16
$(document).addEventListener('DOMContentLoaded', async function() {,还是进不去




帮不到哥哥了
需要哥哥对同步有理解才能实现...
页: 1 [2]
查看完整版本: 调用函数无法立即执行