Javascript“for”循环崩溃页面

时间:2014-01-09 15:30:47

标签: javascript

此代码的目标是检查连续的&,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和=的网站上,它崩溃了页面。

2 个答案:

答案 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/

祝你好运!