运行此代码时,Javascript会冻结浏览器

时间:2012-10-26 22:44:11

标签: javascript hyperlink

我正在尝试获取文本输入的值并检查其中是否有任何链接,然后获取这些链接并将其转换为标记。但是,当我运行此代码时,出现问题并完全冻结页面。基本上,我希望它检查“http://”,如果存在,继续添加到子串长度,直到字符串/链接结束。有一个更好的方法吗?

// the id "post" could possibly say: "Hey, check this out! http://facebook.com"
// I'd like it to just get that link and that's all I need help with, just to get the      
// value of that entire string/link.
var x = document.getElementById("post");
var m = x.value.indexOf("http://");
var a = 0;
var q = m;

if (m != -1) {
    while (x.value.substr(q, 1) != " ") {
        var h = x.value.substr(m, a);
        q++;
    }
}

1 个答案:

答案 0 :(得分:3)

当然是 - 有一个无限循环。

您可能希望在每次迭代中更新变量q

q = q + a;

或仅q += a;

<强>更新

我看到你稍微更改了代码。

我得到了你想做的事。您正在尝试从输入值获取URL。

为什么不用简单的RegExp代替这个不明确的循环?

var match = x.value.match(/(?:^|\s)(http:\/\/\S+)/i);
var url = match ? match[1] : null;