油猴代码修改网页元素,但是执行后没反应
代码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 就是空的,把这行代码放定时器里面试试
解决方案: 统一模拟数据文件的请求方式,将文件全部放到一个目录中,根据请求路径逐层放置
实现: 见【优化】
问题分析: 根据问题的描述,在油猴脚本中尝试修改网页的某个元素,但执行后没有任何变化。可以考虑以下几个可能的原因: 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修改网页元素
看了一下,发现脚本运行后网页代码并没有改变