Tampermonkey / Javascript:寻找一种方法来提醒用户页面中的URL

时间:2019-02-12 09:22:11

标签: javascript userscripts tampermonkey

在我的工作中,我必须检查网页/网站中的特定URL,如果发现其中任何URL,则标记它们以供客户服务审核。

一个不再在公司工作的同事编写了一个脚本来自动执行此操作,但是代码很混乱。

当我进入脚本并尝试添加新页面进行搜索时,我学到了这一点。

我对javascript的了解非常有限,但我大多是通过阅读教程和反复试验来解决的。

尽管如此,我很困惑。

这是有问题的代码:

(出于隐私/数据隐私的原因,我不会显示包含和排除。)

代码:

// Links
var read = document.getElementsByTagName('a');

// Belongs to Links
var link;

// Start Youtube-Link Search
var alertbox1 = 0;
var alertbox2 = 0;
var alertbox3 = 0;
var alertbox4 = 0;
var alertbox5 = 0;
var alertbox6 = 0;
var alertbox7 = 0;

// End Youtube-Link Search


for(var n=0; n < read.length; n++)
{
    link = read[n];


if(link.href.indexOf("http://www.youtube.com") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox1 == 0)
    {
        alertbox1++;
    }

    if(alertbox1 == 1)
    {
        alert("Youtube Link!");
        alertbox1++;
    }

}


if(link.href.indexOf("https://www.youtube.com") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox2 == 0)
    {
        alertbox2++;
    }

    if(alertbox2 == 1)
    {
        alert("Youtube Link!");
        alertbox2++;
    }

}


if(link.href.indexOf("http://youtube.com") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox3 == 0)
    {
        alertbox3++;
    }

    if(alertbox3 == 1)
    {
        alert("Youtube Link!");
        alertbox3++;
    }

}


if(link.href.indexOf("https://youtube.com") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox4 == 0)
    {
        alertbox4++;
    }

    if(alertbox4 == 1)
    {
        alert("Youtube Link!");
        alertbox4++;
    }

}


if(link.href.indexOf("http://www.youtu.be") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox5 == 0)
    {
        alertbox5++;
    }

    if(alertbox5 == 1)
    {
        alert("Youtube Link!");
        alertbox5++;
    }

}


if(link.href.indexOf("https://www.youtu.be") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox6 == 0)
    {
        alertbox6++;
    }

    if(alertbox6 == 1)
    {
        alert("Youtube Link!");
        alertbox6++;
    }

}


if(link.href.indexOf("http://youtu.be") == 0)
{
    link.style.color="#ff0000";
    link.style.borderBottom="5px dotted red";

    if(alertbox7 == 0)
    {
        alertbox7++;
    }

    if(alertbox7 == 1)
    {
        alert("Youtube Link!");
        alertbox7++;
    }

}

我尝试对此进行“优化”,并让它寻找通配符,以减少整体使用量(例如:“ :// .youtube。*”),但这不起作用/但这使脚本无法正常工作,但我认为应该可以将查找http和https以及.com,.de和.be链接组合在一起,而不必将每种可能性都写成自己的标准。

如果我是:

是否有更好,更干净的方法来执行此操作,以便当脚本在活动页面/站点内找到URL时,会引发警告框供用户查看并单击以退出?

感谢您,任何人都能够并且愿意使用任何指针/帮助/提示/建议。

1 个答案:

答案 0 :(得分:0)

签出regexhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

我会警告您,这将需要一些时间来习惯。如果您决定使用正则表达式,http://regexr.com这个网站绝对可以为您提供帮助。

可以像这样声明和使用将匹配您指定的所有情况的正则表达式:

var regex=/https?://(www\.)?youtu\.?be(\.com)?/gi

if (regex.exec(string_to_test)){
   //show the alert message
}

...欢迎使用S / O!我建议将问题的第二部分分成一个单独的部分。编码愉快!