使用for循环检查单击的链接是否在白名单数组中

时间:2015-04-16 18:36:22

标签: jquery loops for-loop

我正在查看被点击链接的路径是否在列入白名单的网址路径中。

var $whiteListURL = ['/PATH1', '/PATH2'],
    $whiteListURLLen = $whiteListURL.length,
    $link = window.location.pathname,
    isFound = false;

for ( var i = 0; i < $whiteListURLLen; i++ ) {
    if ( !$.cookie('MYCOOKIE') && $link.indexOf($whiteListURL[i]) > -1 ) {
        isFound = true;
        document.location.href = $link;
        $.cookie("MYCOOKIE", $lang, { expires: 1, path: '/', domain: 'MYSITE.com' });
        break;
    }
}    

if ( isFound || !$.cookie('MYCOOKIE') ) {
    EVT.emit('fire_modal'); 
}

目前它转到了正确的位置,但它保持链接到同一页面。我没有打破循环吗?

我遇到的问题是:

  1. 我还有两个要检查的清单。我会写多个FOR循环吗?

1 个答案:

答案 0 :(得分:1)

您确实陷入for循环,因为您在设置Cookie之前重新加载页面

document.location.href = $link; // Page will refresh now
$.cookie("MYCOOKIE", $lang, { expires: 1, path: '/', domain: 'MYSITE.com' }); // This code is never reached

只需从位置切换这两行,并且在页面重新加载后不应再次进入循环。

Sidenote isFound在您当前的代码中永远不会是true,因为您在将页面设置为true后重新加载页面,然后它会被设置在代码的开头再次false