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