油猴中修改网页元素,但执行没变化,求解答

油猴代码修改网页元素,但是执行后没反应
代码xiao白,第一次写油猴代码,在摸索中
代码在控制台中运行正常,但是在油猴中就没有效果,求da佬解答

// ==UserScript==
// @name        建工移除 - xaceg.cn
// @namespace   kkkkk
// @match       https://oa.xaceg.cn/
// @match       *://*.xaceg.cn/*
// @grant       unsafeWindow
// @version     1.0
// @author      kkkk
// @description 2023/7/17 下午2:28:41
// ==/UserScript==

(function() {
    'use strict';

    var elements = document.querySelectorAll("[id^='wea_watermark_']");

    setTimeout(function() { // 在此处编写您要延迟运行的代码

      for (var i = 0; i < elements.length; i++) {
        elements[i].style.zIndex = "0";
      }


    }, 5000); // 延迟时间为5000毫秒

})();

因为你的这行代码var elements = document.querySelectorAll("[id^='wea_watermark_']");在定时器外面,油猴加载时页面可能还不存在,所以elements 就是空的,把这行代码放定时器里面试试

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7629320
  • 这篇博客也不错, 你可以看下微信小程序实现购物车功能,包含完整小程序代码和运行效果截图
  • 除此之外, 这篇博客: 前端模拟后端接口返回数据的方法中的 文件中与请求关联起来,当请求过多时,两者关联过于繁琐 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 解决方案: 统一模拟数据文件的请求方式,将文件全部放到一个目录中,根据请求路径逐层放置

    实现: 见【优化


  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 解决方案录入,应用搜索可见,应用上架概述小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 根据问题的描述,在油猴脚本中尝试修改网页的某个元素,但执行后没有任何变化。可以考虑以下几个可能的原因: 1. 油猴脚本代码错误或不生效; 2. 网页中的元素无法通过选择器或 JavaScript 代码正确获取到; 3. 网页可能使用了异步加载或动态生成元素,导致脚本无法获取。

    解决方案: 1. 确保油猴脚本正确安装和启用,可以在浏览器的扩展管理页面确认; 2. 使用控制台或 Chrome 插件(如 SelectorGadget)来获取元素的选择器,并在脚本中使用 document.querySelector() 或 document.querySelectorAll() 来获取元素; 3. 若要修改的元素是通过异步加载或动态生成的,可以使用 MutationObserver 来监听 DOM 的变化,并在元素出现后再进行修改。

    代码示例:

    // ==UserScript==
    // @name         修改网页元素示例
    // @namespace    your-namespace
    // @version      1.0
    // @description  修改网页元素示例脚本
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // 使用 MutationObserver 监听 DOM 的变化
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                // 判断新增的节点是否是需要修改的元素
                if (mutation.type === 'childList' && mutation.addedNodes.length) {
                    const nodes = Array.from(mutation.addedNodes);
                    const target = nodes.find((node) => {
                        // 根据具体情况修改选择器和条件
                        return node.matches('.target-element');
                    });
    
                    if (target) {
                        // 对元素进行修改
                        target.style.color = 'red';
                    }
                }
            });
        });
    
        // 监听整个文档树的变化
        const config = { childList: true, subtree: true };
        observer.observe(document.documentElement, config);
    
        // 在页面加载完成后尝试修改元素,确保选择器正确
        window.addEventListener('load', (event) => {
            const target = document.querySelector('.target-element');
    
            if (target) {
                // 对元素进行修改
                target.style.color = 'red';
            }
        });
    })();
    

    参考资料: - Tampermonkey 官方文档 - DOM 监听变化:MutationObserver - 如何使用Tampermonkey修改网页元素

看了一下,发现脚本运行后网页代码并没有改变