繁体   English   中英

Tampermonkey脚本将文本转换为链接

[英]Tampermonkey script to turn text into links

另一个可怜的灵魂在Tampermonkey / Greasemonkey中无法进行文本替换的正面或反面。 我正在处理一系列表行,如下所示:

<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>

我想要的是将每个数字转换为这种形式的链接:

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

(在?后面的换行符恰好在这里适合页面; URL中不应该有实际的换行符。)

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

我看了最简洁的方法来在网页上进行文本替换? (使用GreaseMonkey)如何从Greasemonkey中的现有文本创建链接? Greasemonkey:在表格中添加一个链接http://www.overclock.net/t/487779/help-with-greasemonkey-and-regular-expressions但我无法弄清楚如何制作任何建议答案适用于我的情况。 (我在Chrome中运行Tampermonkey,但希望Greasemonkey的答案对我有用。)我会谦卑地感谢任何帮助。

这应该用于tampermonkey。

只需要将命名空间更新为您希望它运行的命名空间。 如果该站点已经使用了jQuery,那么您也可以抛弃require属性。

 // ==UserScript== // @name Updator // @namespace http://stackoverflow.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>"); } }); }); 

如果你不使用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>');
   }

编辑使用了您的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM