js刷新网页的操作为什么会慢过alert和for循环之类。无法先执行(导致我的for循环卡死)。

夺命奇犽 2016-05-09 11:33:58
 
var PLAYurl = [];
var url = window.location.href;
for (var i=0;;i++)
{
if( url.search(PLAYurl[i]) >=0 )
{window.location.href=window.location.href.replace(/.*/g, 'about:blank');}
else{break;}
}


大意就是,想匹配某个网址,如果正确就跳转到空白页。
但实际情况就是,无限循环然后崩溃。
如果我在“if”的末尾加上break;。改成“(/.*/g, 'about:blank');break;”就可以正确执行。

请问,为什么会这样?

我简单的实验了一下

for (var i=0;;i++)
{
if( i >= 0 )
{window.location.href=window.location.href.replace(/.*/g, 'about:blank');alert(1)}
}


这样的结果就是先弹出alert(1),然后无限循环就是不刷新。
当然如果改成for (var i=0;i<3;i++)类似的给个条件,那么也至少是弹出alert(1)3次才能刷新。

请问,这样的情况如何解释,如何解决呢?
让刷新网页先执行.
我并不清楚数组到时候有多少量,所以没有给for添加判定条件。如果在后面加个“break”,也是麻烦
...全文
243 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
夺命奇犽 2016-05-09
  • 打赏
  • 举报
回复
引用 2 楼 chz415767975 的回复:
亲,你的for循环是不是少了 for (var i = 0; i++; i < PLAYurl.length)
我实际是想,如果window.location.href的刷新是先执行。那么后面的结束条件不就是省了吗,这样的意思。 但实际是不行。
夺命奇犽 2016-05-09
  • 打赏
  • 举报
回复
引用 1 楼 MengYouXuanLv 的回复:

var PLAYurl = [];
var flag = false;
var url = window.location.href;
    for (var i=0;;i++)
    {
        if( url.search(PLAYurl[i]) >=0 )
        {flag = true;break;}
        else{break;}
            }
if(flag){
window.location.href=window.location.href.replace(/.*/g, 'about:blank');
}
window.location.href替换可能是方法结束后再执行。 还有就是PLAYurl是数组 应该会有长度 你把数组长度设置成i的最大值就不会无限循环了
试了好多次,类似window.location.hre的几个网址刷新方法都是在方法结束后才执行。 不得不放弃添加上了for循环次数条件,数组长度。 如果是先执行的话,就不用条件和break了,就不会死循环了,省了好多。
stephen9527 2016-05-09
  • 打赏
  • 举报
回复

var PLAYurl = [];
var url = window.location.href;
for (var i=0;;i++)
{
if( url.search(PLAYurl[i]) >=0 )
{
window.location.href=window.location.href.replace(/.*/g, 'about:blank');
break;//如果找到了就跳出循环
}
if(i==PLAYurl.length){
break;//如果数组迭代完了也没有匹配到,也跳出循环
}
}
霜寒月冷 2016-05-09
  • 打赏
  • 举报
回复
亲,你的for循环是不是少了
for (var i = 0; i++; i < PLAYurl.length)
allali 2016-05-09
  • 打赏
  • 举报
回复

var PLAYurl = [];
var flag = false;
var url = window.location.href;
    for (var i=0;;i++)
    {
        if( url.search(PLAYurl[i]) >=0 )
        {flag = true;break;}
        else{break;}
            }
if(flag){
window.location.href=window.location.href.replace(/.*/g, 'about:blank');
}
window.location.href替换可能是方法结束后再执行。 还有就是PLAYurl是数组 应该会有长度 你把数组长度设置成i的最大值就不会无限循环了

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧