window.location.pathname
是你搜索的東西。
我建議您閱讀window.location的MDN說明。像MDN中的其他內容一樣,這也非常簡單明瞭。
如果您知道該URL在末端您可以將不必要的index.html部分:
var path = window.location.pathname.split('/');
path.pop();
path.join('/');
,或者你可以切片它(因爲它通常更快):
path.slice(0,path.lastIndexOf('/')+1)
編輯:
看到你的新問題我可以說,你想要的東西只能通過當前的URL不能一致和安全地完成。
您需要http://localhost/myweb/
部分,它是應用程序的URL根目錄。在JavaScript中,你可以獲得URL的協議和域名。在您的現場,這兩個匹配,但如果您的應用程序駐留在一個子文件夾中(如本地主機上的myweb
文件夾),則會失敗。
您需要的是以某種方式識別應用程序URL(您的應用程序的URL根目錄)。
問題是,只通過檢查URL,JavaScript無法知道您的應用程序駐留在哪裏。
比方說,你部署你的網站:http://localhost/myweb/site1/
您將有以下網址:http://localhost/myweb/site1/cart/index.php
的Javascript可以用斜線(/
)劃分的URL,但它沒有nowing多少子文件夾的方式它應該選擇。例如,從您的應用程序根目錄上面的URL可以是以下任何一個:http://localhost/
,http://localhost/myweb/
,http://localhost/myweb/site1/
,http://localhost/myweb/site1/cart/
。
通過其他方法(我先建議),您可以放棄URL的末尾(在您的案例中cart/index.php
部分)。這隻有在你的URL結構非常嚴格時纔會起作用,所以這個腳本執行的所有頁面都駐留在一個子文件夾中。
因此它會在以下網址中突破:http://localhost/myweb/site1/gallery/old/index.php
或類似。
您的最好的選擇可能會讓它成爲一個單獨的文件中的「配置變量」,您可以在它被部署到的每個位置進行編輯。
作爲一個PHP變量($appRoot = "http://localhost/myweb/"
),您可以使用它生成JavaScript。
或者更簡單的一個javascript變量(var appRoot = 'http://localhost/myweb/'
)。製作一個單獨的js文件,將其命名爲config.js
,將上面的行添加到它並在其他javascripts之前引用它。
爲什麼你需要這樣做? – Blender
因爲我在我的js文件中有很多位置,但是如果我將它們更改爲硬編碼的「myweb /」位,我必須恢復它以將其放入實時並在將代碼提交到SVN之前,反之亦然 – Thanu
你的JS看起來像這裏的問題。你爲什麼不使用相對路徑? – Blender