如果Statement有字符串和其他字符串(Make To List)

时间:2015-07-12 13:10:36

标签: javascript

很抱歉,我无法在google中找到该教程,因为我不知道关键字...

var currentURL=location.href;
var str = currentURL;

      if(str == "http://web.com/blabla" || str == "http://web.com/bleble"){
        window.location = "http://web.com/ban";
      } else {
      }

如何列出str == "http://web.com/blabla" || str == "http://web.com/bleble"?所以,如果我想再次输入一些网址,我只需将网址输入到列表中。可以给我代码或链接教程???

3 个答案:

答案 0 :(得分:2)

基本上,您需要将所有URL放入一个数组中,然后遍历数组检查每个项目。

var urls = ['http://web.com/','http://web.net/','http://web.org'];
var current_url = '...';

for (var i = 0; i < urls.length; i++){
  if (current_url == urls[i]){
    window.location = "http://web.com/ban";
    break; // exit the loop since we have already found a match
  }
}

break命令将终止循环并停止在数组中搜索匹配的URL。由于如果任何的网址匹配,您需要执行的操作就会发生,因此只需匹配即可停止搜索。

答案 1 :(得分:1)

列表在javascript中称为数组,并使用方括号声明,如下所示:var badUrls = ["http://web.com/blabla", "http://web.com/bleble"]

要检查当前URL是否出现在数组中,您可以使用数组的.indexOf函数,该函数将返回数组中可以找到您提供的字符串的第一个位置(从0开始,第一个元素),如果不存在则为-1。例如,如果您有一个数组var arr = ["foobar", "foo", "bar", "baz"],并且执行arr.indexOf("foo"),则会获得1,因为它是数组中的第二个元素。如果您执行arr.indexOf("fooba"),则会得到-1,因为数组中的所有元素都不是fooba。在您的代码中,您希望在badUrls.indexOf(str) > -1时重定向用户。您可以在MDN Documentation中获取有关indexOf的更多信息。

这使您的代码看起来像:

var currentURL=location.href;
var str = currentURL;
var badUrls = ["http://web.com/blabla", "http://web.com/bleble"]

if(badUrls.indexOf(str) > -1){
  window.location = "http://web.com/ban";
} else {
}

答案 2 :(得分:1)

window.location是一个浏览器对象,你希望页面转到http://web.com/ban,你应该使用

window.location.href = "http://example.com/ban";

但是,您似乎试图阻止人们使用JavaScript访问网页。这是非常不安全的,因为列出您的代码的任何人都会看到您尝试保护哪些网址并立即请求它们。如果他们请求禁用JavaScript或使用curl的URL,则会传递页面。

您应该使用服务器端配置保护页面。使用Apache,您可以使用Allow / Deny配置或RewriteRules。