如何将用户脚本注入嵌入式网页内容?

清算

我有一个用户脚本,我想在单击链接打开嵌入式网页后注入。具体来说,我想知道我应该如何注入这个脚本:

Array.from(document.querySelectorAll('span')).filter(i => /(\d+)\spoint/.test(i.innerHTML)).forEach(i => i.style.display = 'none');

Array.from(document.querySelectorAll('div')).filter(i => /moreComments-/.test(i.id)).forEach(i => i.querySelector('p').click());

setTimeout(function() {
    Array.from(document.querySelectorAll('span')).filter(i => /(\d+)\spoint/.test(i.innerHTML)).forEach(i => i.style.display = 'none');
},7000)

进入所有可嵌入的 Reddit 子页面,即从 subreddit 主页加载的所有链接线程:

说明嵌入式 Reddit 子页面与标准完全加载页面对比的图像

I assume this requires an event listener or MutationObserver, but I don't know how to go about specifying the solution. Reading the Reddit source is deeply confusing and I'm not a coder. This is just something I think would be useful to know for myself and other everyday web users.

What are the right steps to follow in problem-solving a case like this? What kind of code should I consider?

Serge Ageyev

You need to process the userscript on a selected group of page nodes. Because your code is only executed once per page load event, the nodes that load dynamically later on remain unaffected.

There are several ways to achieve your goal. One of the simplest approaches involves the use of the setInterval function. This calls your function periodically (by using a reasonable time span, say 500ms). With this function, you have to select the nodes you want and process only new arrival nodes. You can mark your node's DOM objects with something like the _is_processed property. And finally this can be wrapped into another function, say doForEachOnce. For example:

function doForEachOnce(list,theFunc) {
    list.forEach(i => {
        if (!i._is_processed) { i._is_processed = true; return theFunc(i); } else { return null; }
    });
}

doForEachOnce(Array.from(document.querySelectorAll('span')).filter(i => /(\d+)\spoint/.test(i.innerHTML)), i => i.style.display = 'none');
doForEachOnce(Array.from(document.querySelectorAll('div')).filter(i => /moreComments-/.test(i.id)), i => i.querySelector('p').click());

setInterval(function() {
  doForEachOnce(Array.from(document.querySelectorAll('span')).filter(i => /(\d+)\spoint/.test(i.innerHTML)), i => i.style.display = 'none');
},500);

I tested this userscript successfully with Tampermonkey. It expands all comments, hides the karma on page load, and then hides the karma again for each new arrival. Hope this is what you need.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python中刮取网页上的嵌入式脚本

来自分类Dev

如何在Spring Boot应用程序中将用户添加到嵌入式tomcat?

来自分类Dev

如何将变量发送到嵌入式shell脚本?

来自分类Dev

如何访问网页中的嵌入式pdf文件

来自分类Dev

如何从网页下载嵌入式RTF文件?

来自分类Dev

将用户添加到WebLogic嵌入式LDAP服务器

来自分类Dev

删除嵌入式网页的边距

来自分类Dev

如何使嵌入式Segue响应用户操作

来自分类Dev

TEdgeBrowser组件:从嵌入式网页上运行的脚本调用本机代码

来自分类Dev

如何将用户名注入页脚?

来自分类Dev

UIContainerView的内容高度(嵌入式UITableViewController)

来自分类Dev

嵌入式脚本的起源是什么?

来自分类Dev

如何从网页中的嵌入式pdf获取所选文本?

来自分类Dev

这些不应该包含这些内容的网页上奇怪的嵌入式链接广告是什么?

来自分类Dev

如何将嵌入式 C 中的类型用于便携式裸机软件

来自分类Dev

OAuth 2.0成功登录后,如何将用户登录到Google网页?

来自分类Dev

如何从Xcode中的“框架,库和嵌入式内容”中删除空白行

来自分类Dev

如何在嵌入式Python脚本的错误消息中打印PyObject的类型?

来自分类Dev

如何在嵌入式脚本所在的位置添加DOM元素

来自分类Dev

在Bash脚本中,continue命令如何与嵌入式循环一起使用?

来自分类Dev

如何正常关闭嵌入式码头

来自分类Dev

如何与LCD通讯(嵌入式C)

来自分类Dev

如何集群嵌入式Cassandra实例?

来自分类Dev

如何共享嵌入式结构指针

来自分类Dev

如何验证mongodb嵌入式文档

来自分类Dev

如何测试Mongoid的嵌入式文档?

来自分类Dev

如何对嵌入式文档进行排序?

来自分类Dev

如何删除重复的嵌入式文档

来自分类Dev

如何从嵌入式资源加载图像

Related 相关文章

  1. 1

    如何在python中刮取网页上的嵌入式脚本

  2. 2

    如何在Spring Boot应用程序中将用户添加到嵌入式tomcat?

  3. 3

    如何将变量发送到嵌入式shell脚本?

  4. 4

    如何访问网页中的嵌入式pdf文件

  5. 5

    如何从网页下载嵌入式RTF文件?

  6. 6

    将用户添加到WebLogic嵌入式LDAP服务器

  7. 7

    删除嵌入式网页的边距

  8. 8

    如何使嵌入式Segue响应用户操作

  9. 9

    TEdgeBrowser组件:从嵌入式网页上运行的脚本调用本机代码

  10. 10

    如何将用户名注入页脚?

  11. 11

    UIContainerView的内容高度(嵌入式UITableViewController)

  12. 12

    嵌入式脚本的起源是什么?

  13. 13

    如何从网页中的嵌入式pdf获取所选文本?

  14. 14

    这些不应该包含这些内容的网页上奇怪的嵌入式链接广告是什么?

  15. 15

    如何将嵌入式 C 中的类型用于便携式裸机软件

  16. 16

    OAuth 2.0成功登录后,如何将用户登录到Google网页?

  17. 17

    如何从Xcode中的“框架,库和嵌入式内容”中删除空白行

  18. 18

    如何在嵌入式Python脚本的错误消息中打印PyObject的类型?

  19. 19

    如何在嵌入式脚本所在的位置添加DOM元素

  20. 20

    在Bash脚本中,continue命令如何与嵌入式循环一起使用?

  21. 21

    如何正常关闭嵌入式码头

  22. 22

    如何与LCD通讯(嵌入式C)

  23. 23

    如何集群嵌入式Cassandra实例?

  24. 24

    如何共享嵌入式结构指针

  25. 25

    如何验证mongodb嵌入式文档

  26. 26

    如何测试Mongoid的嵌入式文档?

  27. 27

    如何对嵌入式文档进行排序?

  28. 28

    如何删除重复的嵌入式文档

  29. 29

    如何从嵌入式资源加载图像

热门标签

归档