2015-07-12 19 views
1

對不起,我找不到在谷歌的教程,因爲我不知道該關鍵字...聲明如果有一個字符串和另一個字符串(做出列表)

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"清單?所以如果我想再次輸入一些網址,我只需輸入網址到列表中。可以給我的代碼或鏈接教程?

+0

[數組使用Javascript](http://www.w3schools.com/js/js_arrays.asp) –

回答

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 { 
} 
+1

我會說解釋'indexOf'實際上做了什麼以及它的輸出是什麼意思是很重要的。這是一個很好的解決方案,但是如果不瞭解這裏究竟發生了什麼,OP可能無法從中獲得任何知識。 – Lix

+0

不錯,工作很好 – DeVoresyah

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。因爲如果的任何的網址匹配,您需要採取的操作就會發生,因此只要匹配即可停止搜索。

+0

如何'urls.indexOf(current_url)' – fuyushimoya

+1

@fuyushimoya - 也是一個非常有效的解決方案。不過,我嘗試將我的解決方案與編程水平相匹配,以評估提問者的水平。我覺得這個解決方案會很容易做好準備和理解。雖然總是有改進的空間 - 感謝您的反饋! – Lix

+0

@fuyushimoya可以使用它? – DeVoresyah

1

window.location的是一個瀏覽器對象,你想要的頁面去http://web.com/ban,你應該使用

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

然而,這看起來就像您試圖阻止人們使用JavaScript訪問網頁一樣。這是非常不安全的,因爲任何列出你的代碼的人都會看到你試圖保護哪些URL並立即請求它們。如果他們請求禁用JavaScript的URL或使用curl,則頁面將被傳送。

您應該使用服務器端配置來保護頁面。使用Apache,您可以使用Allow/Deny配置或RewriteRules。

+0

我把這個JavaScript代碼放在博主中 – DeVoresyah

相關問題