我正在查看被点击链接的路径是否在列入白名单的网址路径中。
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');
}
目前它转到了正确的位置,但它保持链接到同一页面。我没有打破循环吗?
我遇到的问题是:
答案 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
。