gpt4 book ai didi

javascript - 为什么这个 chrome/Greasemonkey 脚本没有执行?

转载 作者:行者123 更新时间:2023-11-30 18:40:49 27 4
gpt4 key购买 nike

我有以下简单的 Greasemonkey 脚本:

// ==UserScript==
// @name MetaCPAN Everywhere
// @description Add to every link to CPAN a link to MetaCPAN on a Google results page.
// @namespace http://ajct.info
// @match http://*/*
// @version 0.1
// ==/UserScript==

(function() {

var page_links = document.links;
for (var i=0; i<page_links.length; i++){
if (page_links[i].href.match(/http:\/\/search\.cpan\.org\/perldoc\?(.*?)$/i)) {
var match = page_links[i].href.match(/http:\/\/search\.cpan\.org\/perldoc\?(.*?)$/i);
var span = document.createElement("span");
span.innerHTML = "&nbsp; <a href=\"http://www.metacpan.org/module/"+match[1]+"\">MetaCPAN</a>";
page_links[i].parentNode.insertBefore(span, page_links[i].nextSibling);
}
}

})();

如果我通过 firebug 运行 JavaScript 片段,它会做正确的事情,但如果我安装它并访问搜索结果页面,它似乎不会执行脚本。

这大概是一些微不足道的事情,但任何人都可以指出我错过了什么吗?

最佳答案

最主要的是 Google ajax-in 几乎所有的结果,所以您需要一种方法来等待第一批并检查后面的批处理。

有很多技巧。一个简单的方法是使用计时器:

//--- This handles both page-load delays, and AJAX changes.
var chkInterval = setInterval (checkForResultsLinks, 500);

function checkForResultsLinks () {
var links = document.querySelectorAll ('#search a');
if (links) {

for (var J = links.length - 1; J >= 0; --J) {
var link = links[J];

if (link.weHaveProcessed)
continue;

if (link.href.match (/http:\/\/search\.cpan\.org\/perldoc\?(.*?)$/i) ) {
var match = link.href.match (/http:\/\/search\.cpan\.org\/perldoc\?(.*?)$/i);
var span = document.createElement("span");
span.innerHTML = "&nbsp; <a href=\"http://www.metacpan.org/module/"+match[1]+"\">MetaCPAN</a>";
link.parentNode.insertBefore (span, link.nextSibling);
link.weHaveProcessed = true;
}
}
}
}


注意事项:

  1. Google 搜索结果显示在 ID 为“search”的 div 中。
  2. 最好将 //@run-at document-end 指令添加到此类脚本中。
  3. 当前脚本的@match指令过于宽泛,脚本将在每个网页上触发!
    您可能希望将其限制为:

    // @match http://www.google.com/*
    // @match http://google.com/*
  4. 没有必要也没有必要将代码包装在匿名函数中,例如:(function() { ... })();

    <

关于javascript - 为什么这个 chrome/Greasemonkey 脚本没有执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6908845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com