Tampermonkey / Javascript: в поисках способа оповещения пользователей об URL-адресах на странице - PullRequest
0 голосов
/ 12 февраля 2019

В моей работе мне приходится проверять веб-страницы / веб-сайты на наличие определенных 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++;
    }

}

Я попытался немного «оптимизировать» это и позволить ему искать подстановочные знаки, чтобы сократить количество записей (например: «* 1018»).*: //.youtube.*) но это не работает / это мешает скрипту работать. Но я чувствую, что должна быть возможность комбинировать поиск http и https, а также .com, .deи .be ссылки без необходимости записывать каждую возможность как свою собственную. Я прав?

И если я:

Есть ли лучший, более чистый способ сделать это, чтобы, когдаСценарий находит URL-адрес внутри активной страницы / сайта, он выдает окно с предупреждением для пользователя, чтобы увидеть и нажать?

Спасибо, всем и каждому, кто может и желает поделиться любыми указателями / помощью / подсказками / советами.

1 Ответ

0 голосов
/ 12 февраля 2019

Выезд regex.https://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!Я бы рекомендовал разделить вторую часть вашего вопроса на отдельную.Удачного кодирования!

...