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 table和http://www.overclock.net/t/487779/help-with-greasemonkey-and-regular-expressions但我不能完全弄清楚如何使我的情况任何建议答案的工作。 (我在Chrome中运行Tampermonkey,但希望Greasemonkey的答案可能适用于我。)我会虚心地感谢任何帮助。
这应该做篡改密钥。
只需要将命名空间更新为您希望运行的命名空间。 如果网站已经使用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>");
}
});
});
谢谢你,完美的工作!我添加了一个使用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>');
}
编辑 使用您的链接
恐怕没有效果,但谢谢你的建议。 – 2014-10-29 02:22:25
我发布之前有趣的我测试了它,所有的数字,但第一个TH被链接成功取代。有它作为window.onload()函数。有什么问题? – tomasb 2014-10-29 12:30:39
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