- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了太多时间试图解决这个问题,由于 JavaScript 不是我的主要语言,也不是 jQuery 大师,我决定我需要寻求帮助。
在生成页面的结构中,出于某种奇怪的原因,它有一个 DIV,没有 ID,多个非标准数据标签属性标签,但至少是标准样式的 CLASS 分配....但是......它已分配多个类(class)。
现在,这些样式类中只有一个具有关联的代码事件,我想中性化并保留所有其他类仍然分配。我在那里尝试过的(这个列表远未完成我已经尝试了很多东西):
document.getElementsByClassName('Goodclass01')[0].remove('BADCLASS');
document.querySelectorAll('[data-tag-one="["value",
"value"]"]').remove('BADCLASS');
Various jnode calls that all fail due to claims of being unknown
A couple variations of something referred to as the "location hack" none of
which I could get to work but may have very well have been user error.
Safewindow attempt to just replace BADCLASS javascript function all together
but not ideal explained below.
这里是一个目标结构的例子:
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03 BADCLASS"
data-tag-one="["value", "value"]">
</div>
在此示例中,有一个 javascript 函数会在单击上面的 href 链接时触发,因为该函数与 BADCLASS 样式分配相关联。因此,通过大量搜索,我似乎应该能够通过任何最初分配的类来获取该 DIV(因为不幸的是没有一个类 ID 会使它变得非常容易),然后重新分配类列表减去页面加载时的 BADCLASS。因此,当用户单击链接时,BADCLASS 已被删除,如下所示:
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03"
data-tag-one="["value", "value"]">
</div>
我还读到,简单地使用 unsafewindow 来替换 BADCLASS javascript 函数是可能的,所以我愿意听到你们中的一位专家帮助说明这将是多么容易(或困难)。在 BADCLASS 可以共享函数代码的情况下,该函数代码可能被页面上的另一个元素调用,该元素仍然具有我们希望继续运行的初始类,这就是为什么如果它只是一个需要更改的元素,我宁愿只需更改这个 href div。
希望这个解释是有道理的,对于 Javascript 专家来说,上面可能是一个可笑的简单示例所以请原谅我,但非常感谢您的帮助,并且会节省更多的麻烦! :)
编辑:这必须首先在 Chrome 浏览器中工作!
最佳答案
如果您想从所有具有该类的元素中删除该类,只需选择所有具有该类的元素并从其类列表中删除该类。
[...document.querySelectorAll('.BADCLASS')]
.forEach(e => e.classList.remove('BADCLASS'));
const elements = [...document.querySelectorAll('.BADCLASS')];
elements.forEach(e => e.classList.remove('BADCLASS'));
console.log(elements);
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03 BADCLASS"
data-tag-one='["value", "value"]'>link</a>
</div>
使用 jQuery:
$('.BADCLASS').removeClass('BADCLASS');
const elements = $('.BADCLASS');
elements.removeClass('BADCLASS');
console.log(elements);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03 BADCLASS"
data-tag-one='["value", "value"]'>link</a>
</div>
如果您只想从子集元素中删除类,请从类列表中的类中选择这些元素。
[...document.querySelectorAll('.Goodclass01, .Goodclass02, .Goodclass03')]
.forEach(e => e.classList.remove('BADCLASS'));
const elements = [...document.querySelectorAll('.Goodclass01, .Goodclass02, .Goodclass03')];
elements.forEach(e => e.classList.remove('BADCLASS'));
console.log(elements);
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03 BADCLASS"
data-tag-one='["value", "value"]'>link</a>
<a href="SOME LINK" class="BADCLASS">link</a>
</div>
使用 jQuery:
$('.Goodclass01, .Goodclass02, .Goodclass03').removeClass('BADCLASS');
const elements = $('.Goodclass01, .Goodclass02, .Goodclass03');
elements.removeClass('BADCLASS');
console.log(elements);
<div id="main">
<div class="main_content" data-tag-id="12345">Some stuff sits above</div>
<a href="SOME LINK" class="Goodclass01 Goodclass02 Goodclass03 BADCLASS"
data-tag-one='["value", "value"]'>link</a>
<a href="SOME LINK" class="BADCLASS">link</a>
</div>
run-at
指令的默认值是 document-idle
,但如果由于某种原因已更改,则它需要是 document- idle
,否则您需要以其他方式延迟脚本的执行,直到文档加载完毕。
您可以在用户脚本 header 中使用 run-at
指令,如下所示:
// @run-at document-idle
或者附加一个加载事件监听器到窗口
window.addEventListener('load', function() { /* do stuff */ }, false);
如果您使用的是 jQuery 解决方案之一,则必须使用 require
用户脚本 header 指令来包含 jQuery,如下所示:
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
关于Javascript/Greasemonkey/Userscript.js 识别元素并删除许多类中的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319639/
我必须将所有站点包含在 tampermonkey 中。这是我必须运行的脚本 // ==UserScript== // @name Phishing Blockz // @namespace
在我的脚本顶部,我有以下内容: // ==UserScript== // @name Test script // @description testing auto-update
现在,我正在为浏览器游戏使用用户脚本。我在沙盒和初始化方面遇到了一些问题。 作为解决方案,我找到了一种方法,即创建新元素(脚本)并将对象插入元素。 var script = document.crea
我有一个小的 Greasemonkey 脚本,它的目的是分散所有的焦点,并将焦点返回到网页的顶层。 代码如下所示: document.addEventListener('keydown', funct
我正在努力尝试编写这个用户脚本的语法,它基本上应该遵循以下逻辑: IF (LeftArrowKeyIsPressed) THEN doSomething;ELSE IF (RightArrowKeyI
我正在尝试更改 HTML 标签并删除标签后的类/样式属性。如果我事先创建代码并替换,我已经知道如何执行此操作,现在我想知道如何在已加载的页面上找到标签并用我的 js 替换它们。 var s = "Bl
我目前正在尝试在 Tampermonkey 中为单独的页面创建 3 个用户脚本。使用 GUI,我可以单击“添加新脚本”,但是每次我在进行更改后保存时,它都会在“我的新用户脚本”顶部重新保存,并且似乎没
似乎没有关于这些功能如何工作的任何信息。我想这些是 Tampermonkey 独有的功能? 看起来它们旨在允许当前运行的 Tampermonkey 脚本之间进行通信;不断轮询 GM_Value 存储以
我注意到编译 CoffeeScript 时,没有保留任何单行注释。 这是有问题的,因为我正在尝试在 CoffeeScript 中编写 Greasemonkey/用户脚本,并且它们依赖于元数据 bloc
下面的代码是我创建的 JavaScript 用户脚本的一部分,用于在 Reddit 上的特定 subreddit 上添加评论按钮: // ==UserScript== // @name
在 chrome 中我的用户脚本导致错误 ReferenceError: jQuery is not defined 但是@require 这行包含了jquery。至少我知道它适用于 greasemo
我想为我经常使用的特定站点创建自己的 Tampermonkey 用户脚本,我想添加一些功能并改进一些东西。 因为它加载了一些 .js 文件,做了一些我不想发生的事情,我想替换这些 .js 文件并在我的
我一直在尝试将 userScript 迁移到我自己的扩展程序中,但由于某种原因我无法运行以下代码: // ==/UserScript== console.info('BEFORE Hooked! MO
我正在尝试用一组不同的颜色替换我设置的所有颜色,现在我有它 console.log'ing 我的 UserScript 加载的页面中元素的所有颜色,所以我知道它正在获取颜色正确,但由于某种原因它没有改
我正在编写一个用户脚本,每当我访问我们的 JIRA 服务器时都会运行该脚本。它将用我们公司的身份证照片商店中的图像替换用户的头像图像。这样,整个组织就不需要单独将图像上传到 JIRA 服务器上,以便用
我想将 UserScript 分发给许多人,但是我需要动态创建脚本(使用 PHP),因为某些参数会发生变化。 我有一个模板脚本;在此脚本中,我有几个参数将在运行中填写,例如,在模板中: var a_p
我正在尝试在 Tampermonkey 中运行脚本,并让它在停止之前在选项卡或给定网页上运行一次。该脚本当前会自动单击其中包含给定单词的任何“a”元素链接。示例 HTML 代码如下: Contact
这个问题在这里已经有了答案: Modify new elements when they are added (2 个答案) 关闭 5 年前。 我有这个简单的用户脚本,用于更改 YouTube 页面
顺便说一下,我是 JS 的新手,这是我的第一个脚本。 我正在编写一个小脚本,它应该允许我使用键盘快捷键在未聚焦的 newtab 中打开 flickr 页面中最大的可用图像。 我目前面临两个问题: 脚本
我花了太多时间试图解决这个问题,由于 JavaScript 不是我的主要语言,也不是 jQuery 大师,我决定我需要寻求帮助。 在生成页面的结构中,出于某种奇怪的原因,它有一个 DIV,没有 ID,
我是一名优秀的程序员,十分优秀!