此代码的目标是检查连续的&,b,u和=。但是,当我通过Javascript注入输入代码时,它会崩溃网页。
代码:
var str = document.URL; //gets URL of webpage
var copied = 0;
//this loop reads the URL character by character and checks if it is an &, b, u, or =. If so, it sets the corresponding variables to 1.
for (var i = 0; i < 1; i++) {
var res = str.charAt(i);
if (res == "&") {
var ampYes = 1;
} else {
var ampYes = 0;
}
if (res == "b") {
var bYes = 1;
} else {
var bYes = 0;
}
if (res == "u") {
var uYes = 1;
} else {
var uYes = 0;
}
if (res == "=") {
var eqYes = 1;
} else {
var eqYes = 0;
}
alert(res)
}
我认为它崩溃的原因是由于我的一个“if”中的错误。我在一个没有&符号的网站上测试过它并没有崩溃。但是,在连续&amp;,b,u和=的网站上,它崩溃了页面。
答案 0 :(得分:5)
不要发明自己的车轮。使用url.indexOf("&bu=") > -1
查看它是否在那里。
答案 1 :(得分:1)
以下是使用正则表达式的简单解决方案:
var url = document.URL,
ampYes, bYes, uYes, eqYes;
ampYes = /\&/gi.test(url) ? 1 : 0;
bYes = /b/gi.test(url) ? 1 : 0;
uYes = /u/gi.test(url) ? 1 : 0;
eqYes = /\=/gi.test(url) ? 1 : 0;
console.log(url, ampYes, bYes, uYes, eqYes);
您可以尝试更改网址的值并在此处进行测试:http://jsfiddle.net/kq82D/
祝你好运!