在我的工作中,我必须检查网页/网站中的特定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时,会引发警告框供用户查看并单击以退出?
感谢您,任何人都能够并且愿意使用任何指针/帮助/提示/建议。
答案 0 :(得分:0)
签出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!我建议将问题的第二部分分成一个单独的部分。编码愉快!