2012-03-14 55 views
2

我正在使用jquery,我需要檢查URL以查看用戶是否正在查看標記/分類內容。jquery - 檢查URL的一部分

我需要檢查URL才能這樣做。之前,我在做這樣的事情檢查,看看用戶是什麼網頁上...

var loc = window.location; 
var pageOne = 'http://design.optimus.com/projects'; 
if(loc == pageOne) { 
//do stuff 
} 

但這些URL從來沒有改變過,所以很容易讓我檢查,如果他們是在一個單一的URL或不。

但是,新網址將根據用戶搜索的標籤而具有不同的結尾。例如,

http://optidesign.squarespace.com/projects/tag/design 
http://optidesign.squarespace.com/projects/tag/production 
http://optidesign.squarespace.com/projects/tag/animation 

所以我想用排序方法同第一部分,但我只是想檢查網址的開頭:

http://optidesign.squarespace.com/projects/tag/ 

我如何去這樣做?

+1

您要檢查下面的'tag'「目錄字「? – 2012-03-14 17:01:55

+0

是的。那麼,如果URL中有/標記/任何地方,那麼執行一個函數 – patricko 2012-03-14 17:06:18

回答

4

indexOf方法可用於這一目的:

if (location.href.indexOf('http://optidesign.squarespace.com/projects/tag/') === 0) { 
    // Well... 
} 

我可以想像,你測試上localhost的頁面,或在不同的協議。下面的解決方案可能更爲有用:如果你想知道用戶在什麼網頁

if (location.pathname.indexOf('/projects/tag/') === 0) { 
    // Well... 
} 
+0

=== 0與返回true或false相同嗎? – patricko 2012-03-14 17:05:43

+0

@patricko'=== 0'是[identity operator](http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use)。當兩邊的值和類型相等時它返回「true」,否則返回「false」。 – 2012-03-14 17:06:50

+0

另外,如果它對你有任何幫助,我有很好的[插件](http://spyk3lc.blogspot.com/2012/03/jquery-myurl-extension-how-to-get-that.html)使任何和所有電話的網站URL ** EASY **。見工作[fiddle here](http://jsfiddle.net/SpYk3/2ZuTe/)。如何使用它的例子是在我的[博客](http://spyk3lc.blogspot.com/2012/03/jquery-myurl-extension-how-to-get-that.html) – SpYk3HH 2012-03-14 17:29:58

0

,假設這是繼tag的「目錄」,那麼我建議:

if (url.indexOf('tag')) { 
    var temp = url.split('/tag/')[1]; 
    var curPage = temp.substring(0,temp.indexOf('/')); 
    return curPage; 
} 

JS Fiddle demo

1

如果您有權訪問頁面內容,則可以簡單地添加一個變量,將其傳遞到腳本中,說明您所在的頁面。

假設URL是您必須關閉的唯一數據,您可以使用indexOf來查看URL的該部分是否存在。

var loc = window.location.toString(); 
var pageOne = 'http://design.optimus.com/projects/tag/'; 
if(loc.indexOf(pageOne) >= 0) { 
//do stuff 
} 

爲了面向未來的情況下,您更改域名或切換到HTTPS,你可以選擇使用下列內容:

var loc = window.location.pathname; 
var pageOne = '/projects/tag/'; 
if(loc.indexOf(pageOne) >= 0) { 
//do stuff 
} 

我已經穿上JSFiddle一個例子,你可以玩。

+0

我所能訪問的是網址。 該函數似乎不適合我... – patricko 2012-03-14 17:13:41

+0

@patricko - 你是正確的,window.location需要一個toString()。我已經更新了答案。 – dazbradbury 2012-03-14 17:18:24

0

您可以使用window.location.pathname來代替主機名(例如stackoverflow.com),它總是相同的。 因此,window.location.pathname會爲您提供URL的其餘部分。在這個例子中,會給你: 「/問題/ 9706497/jQuery的檢查換部分-A-URL的」

現在,如果你要檢查前兩個段,可以拆分字符串:

window.location.pathname.split("/"); 

這會給你:

["", "questions", "9706497", "jquery-check-for-part-of-a-url"] 

現在檢查你需要的指數,例如:

parts = window.location.pathname.split("/"); 
if (parts[1] == "projects") { 
    alert("Projects!!"); 
} 
0

要只檢查是否「標籤」存在:

if (window.location.match(/tag/)!==null) { 
    //do something 
} 

要刪除任何網址的最後一部分:

var url = window.location.split('/'); 
    url.pop(); 
    url = url.join().replace(/,/g, '/')+'/';