【发布时间】:2019-07-14 03:30:16
【问题描述】:
我正在尝试使用 Violentmonkey 和 jQuery 从单个 div 中删除 hide 类。我的用户脚本没有做任何事情,我不知道为什么。
已经试过了:
- 添加
// @grant GM_addStyle - 使用以下选择器:
$("expand_collapse.hide")、$("div.expand_collapse")、$(".expand_collapse") - 使用 Tampermonkey
- 使用
@require https://code.jquery.com/jquery-3.4.1.min.js获取jQuery
这是 div:
<div class="expand_collapse hide">
<a href="javascript:" id="expand_all">
Expand
</a>
<a href="javascript:" id="collapse_all">
Collapse
</a>
</div>
这是我的用户脚本:
// ==UserScript==
// @name unhide
// @match https://example/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// ==/UserScript==
$("div.expand_collapse.hide").removeClass("hide");
当我使用 Chrome 检查器手动删除 hide 类时,展开和折叠链接会出现并按预期工作。我想用userscript 达到同样的效果,但它不起作用。
【问题讨论】:
-
确保在DOM已经加载(document.ready)之后脚本正在运行,并且你确定元素不是动态添加或修改的吗?如果是这样,您可以尝试一些 hacky,例如将您的代码放入
setTimeout()以延迟其执行。 -
还需要确保在 dom 加载后不会异步添加元素。尝试添加
console.log('Length=', $("div.expand_collapse.hide").length) -
反之
hide类也可以在dom加载后被其他脚本添加 -
好的,所以我尝试了
( document ).ready(function() { $("div.expand_collapse.hide").removeClass("hide"); });,但没有帮助。我不确定如何使用 setTimeout ????。添加console.log('Length=', $("div.expand_collapse.hide").length)返回Length= 0所以我猜它确实是在加载dom 之后添加的。正如我所说,我是一个完全的新手,所以我不知道如何继续。
标签: javascript jquery greasemonkey tampermonkey userscripts