栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Tampermonkey脚本替换AJAX驱动的页面文本和选择属性中的大量单词?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Tampermonkey脚本替换AJAX驱动的页面文本和选择属性中的大量单词?

要处理AJAX内容,可以使用

MutationObserver
s或使用计时器进行轮询。前者会变得棘手和复杂,而计时器则简单,健壮,并且对于大多数实际应用都适用。

要处理类似的属性

placeholder
,只需使用
document.querySelectorAll("[placeholder]")
获取节点并遍历生成的
NodeList即可

当您使用它时,您可能还需要转换

title
属性。

简而言之:

  • 将替换代码放入函数中。
  • 在中调用该函数
    setInterval
  • 在间隔内,为要更改的属性添加一个单独的循环。

放在一起,跨浏览器用户脚本将如下所示。查看内联注释,
您可以 针对 此jsFiddle页面测试脚本。

// ==Userscript==// @name     Replace lots of terms on an AJAX'd page// @include  http://fiddle.jshell.net/Hp6K2/show    var txtWalker   = document.createTreeWalker (        document.body,        NodeFilter.SHOW_TEXT, { acceptNode: function (node) {     //-- Skip whitespace-only nodes     if (node.nodevalue.trim() ) {         if (node.tmWasProcessed)  return NodeFilter.FILTER_SKIP;         else  return NodeFilter.FILTER_ACCEPT;     }     return NodeFilter.FILTER_SKIP; }        },        false    );    var txtNode     = null;    while (txtNode  = txtWalker.nextNode () ) {        txtNode.nodevalue       = replaceAllTerms (txtNode.nodevalue);        txtNode.tmWasProcessed  = true;    }    //    //--- Now replace user-visible attributes.    //    var placeholderNodes    = document.querySelectorAll ("[placeholder]");    replaceManyAttributeTexts (placeholderNodes, "placeholder");    var titleNodes          = document.querySelectorAll ("[title]");    replaceManyAttributeTexts (titleNodes, "title");}function replaceAllTerms (oldTxt) {    for (var J  = 0;  J < numTerms;  J++) {        oldTxt  = oldTxt.replace (replaceArry[J][0], replaceArry[J][1]);    }    return oldTxt;}function replaceManyAttributeTexts (nodeList, attributeName) {    for (var J = nodeList.length - 1;  J >= 0;  --J) {        var node    = nodeList[J];        var oldText = node.getAttribute (attributeName);        if (oldText) { oldText = replaceAllTerms (oldText); node.setAttribute (attributeName, oldText);        }        else throw "attributeName does not match nodeList in replaceManyAttributeTexts";    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409866.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号