javascript - Greasemonkey 替换代码

标签 javascript html replace greasemonkey userscripts

我想在这样的元素中用 openProfile 替换 openProfileOrUnlockUser:

<a ng-href="/profile/CRYJIEjJGv+th/a/aQmDoFisAhE+LSldMLJbk1VCTJUJMeCqzFw0xZb9Q=="
   ng-click="user.openProfileOrUnlockUser(item._type)" 
   class="show overflow-hidden absolute-fill" 
   eat-click="" 
   href="/profile/CRYJIEjJGv+th/a/aQmDoFisAhE+LSldMLJbk1VCTJUJMeCqzFw0xZb9Q==">

我现在拥有的是:

textNodes = document.evaluate("//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
var searchRE = new RegExp('user.openProfileOrUnlockUser(item._type)','g'); 
var replace = 'user.openProfile'; 
for (var i=0;i<textNodes.snapshotLength;i++) { 
    var node = textNodes.snapshotItem(i); 
    node.data = node.data.replace(searchRE, replace);
}

但它不起作用。

附言搜索了大约 2 个小时,但没有成功。

最佳答案

ng-click 是一个属性,而不是文本节点,因此您的 xpath 将不起作用。

显而易见的选择是 document.querySelectorAll:

[].forEach.call(document.querySelectorAll('[ng-click*="openProfileOrUnlockUser"]'), 
    function(node) {
        node.setAttribute('ng-click', 
            node.getAttribute('ng-click').replace('openProfileOrUnlockUser', 'openProfile')
        );
    }
);

关于javascript - Greasemonkey 替换代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782070/

相关文章:

regex - 如何使用正则表达式替换字符串中除任何换行符 (\n) 之外的所有非数字字符?

javascript - Jquery 在封闭的 CMS 中围绕 html 添加 div

javascript - 浏览器没有重定向,但 url 正在改变

javascript - 使用 HTML 和 Javascript 的剩余天数

javascript - 相对位置和高度 100%

python - 如何使用 xPath 获取 </ul> 和 <p> 之间的文本?

jquery - 为什么 jquery 动画会在 bootstrap 中弄乱我的 nav flexbox 属性?

json - 使用 shell 替换特定行后的单词

javascript - Jquery自动完成在结果和结果之间有空格,结果未显示在模式中

javascript - document.createElement ("tr") 未显示在 html 中