Tampermonkey脚本将文本转换为链接

问题描述:

另一个可怜的灵魂,无法在Tampermonkey/Greasemonkey中替换文本的正面或反面。我负责的,像这样一系列的表行:后Tampermonkey脚本将文本转换为链接

 <td><a href="https://mydomain.com/workflow/index.html? 
      endrun=1&submit=Edit&record=3789">3789</a></td> 

(换行符:

<table class="table table-striped table-hover"> 
    <tr> 
     [a bunch of header cells] 
    </tr> 
    <tr> 
     <td>412</td> 
     <td>An image</td> 
     <td>A thing</td> 
     <td>A person</td> 
     <td>A place</td> 
    </tr> 
    <tr> 
     <td>3789</td> 
     <td>An image</td> 
     <td>A thing</td> 
     <td>A person</td> 
     <td>A place</td> 

把每个号码到这种形式的链接我要的是什么?只是这样才适合这里的页面; URL中不应该有实际的换行符。)

表中有多行;每一个都以一个我想链接的数字开头。在网站的某些页面上,数字是每行中的第三或第四项,而不是第一项。每个页面只有一个表格。我不想更改标题行中的第一个单元格,因为这些单元格已经可点击并用于排序,而且我不想链接任何单词 - 只是数字。

我看着Most concise way to do text replacement on a web page? (using GreaseMonkey)How to create links from existing text in Greasemonkey?Greasemonkey: Add a link in a tablehttp://www.overclock.net/t/487779/help-with-greasemonkey-and-regular-expressions但我不能完全弄清楚如何使我的情况任何建议答案的工作。 (我在Chrome中运行Tampermonkey,但希望Greasemonkey的答案可能适用于我。)我会虚心地感谢任何帮助。

+0

document.querySelectorAll(” “tr td:first-child”)。forEach(function(a){a.innerHTML = a.textContent.link(“https://mydomain.com /workflow/index.html?endrun=1&submit=Edit&record =“+ a.textContent.trim());}); – dandavis 2014-10-28 23:50:54

这应该做篡改密钥。

只需要将命名空间更新为您希望运行的命名空间。 如果网站已经使用jQuery,那么你可以消除require属性。

// ==UserScript== 
 
// @name  Updator 
 
// @namespace http://*.com/ 
 
// @version 0.1 
 
// @description enter something useful 
 
// @match  http://*/* 
 
// @copyright 2012+, You 
 
// @require http://code.jquery.com/jquery-2.1.1.min.js 
 
// ==/UserScript== 
 

 

 
$(document).on("ready", function() { 
 
    
 
    $("table.table-striped td:first-child").each(function(e, i){ 
 
     var this$ = $(this); 
 
     var q = this$.html() 
 
     if (/^\d+$/ig.test(q)){ 
 
      this$.html("<a href='https://mydomain.com/workflow/index.html?endrun=1&submit=Edit&record=" + q + "' >" + q + "</a>"); 
 
     } 
 
    }); 
 

 
});

+0

谢谢你,完美的工作!我添加了一个使用td:nth-​​child(3)的版本,其中的数字在第三列(whyyyy augh不一致的UI将是我的死亡)。我从来没有使用过jQuery,所以我非常感谢帮助。 – 2014-10-29 02:11:35

,如果你不使用jQuery,你也可以做这样的事情:

var cells = []; 
    var coll1 = document.getElementsByTagName('TH'); 
    var coll2 = document.getElementsByTagName('TD'); 
    for (var i = 1; i < coll1.length; i++) { 
     cells.push(coll1[i]); 
    } 
    for (var i = 0; i < coll2.length; i++) { 
     cells.push(coll2[i]); 
    } 
    for (var i = 0; i < cells.length; i++) { 
     var cellValue = cells[i].innerHTML; 
     var number = cellValue.match(/\d+/)[0];//get first number in a cell 
     cells[i].innerHTML = cellValue.replace(/\d+/, '<a href="https://mydomain.com/workflow/index.html?endrun=1&submit=Edit&record=' + number + '">' + number + '</a>'); 
    } 

编辑 使用您的链接

+0

恐怕没有效果,但谢谢你的建议。 – 2014-10-29 02:22:25

+0

我发布之前有趣的我测试了它,所有的数字,但第一个TH被链接成功取代。有它作为window.onload()函数。有什么问题? – tomasb 2014-10-29 12:30:39