2012-06-11 43 views
1

我試圖從複雜的URL中提取頁面名稱。 This post是我如何嘗試這樣做的。現在我能夠獲得頁面的網址,但是一旦我嘗試用它做任何事情,它都會失敗。我正在SharePoint頁面中使用它。爲什麼我只能運行1個JavaScript內部函數

//WORKS! 
var url = window.location; 
alert(url); 

//ALERTS NOTHING 
//PREVENTS ALL JAVASCRIPT AFTER THIS FROM RUNNING AS WELL 
var url = window.location; 
var url_parts = url.split(‘/’); 
var main_url = url_parts[0]; 
alert(main_url); 
+1

確保您使用真正的單引號或雙引號。 'url.split(「/」)'或'url.split('/')' –

回答

3

window.location不是一個字符串,它是一個Location對象,它沒有方法split。它確實有很多的方法來獲得部分的URL,雖然,你可能想看看,即使可以做你想做什麼:

https://developer.mozilla.org/en/DOM/window.location

如果一切都失敗了,你可以使用.toString().split ...

+0

謝謝你的資源。我使用了window.location.pathname,並且現在會找到一種方法將頁面名稱吸出來。 –

0

我知道有所謂的hosthostnamewindow.location屬性:window.location.hostwindow.location.hostname。你應該嘗試一下。

0

JavaScript是目前單線程這樣的警報將阻止執行線程,直到確定被擊中,那麼它應該繼續,htnl5推出網絡工作者這是一種很酷的,但有限...

回至你可能想要這樣做的問題。

window.location.href.split("/") 

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

取決於你想要達到的目的。

+0

好點,但看看他的標題,並在他的代碼評論。 –

+1

我曾看過標題和代碼,但我認爲它們意味着JavaScript執行停止。在這種情況下,這可能是由未捕獲的異常引起的。問題不大可能是'alert'是同步的。 – icktoofay

+0

好趕上! '\'可能完全停止了翻譯。 –

1

難道只是我還是每個人都完全錯過了不是有效的JavaScript引號?

改爲使用'"

並且訪問location.href而不是僅僅location。這也會有幫助。

+0

關於報價的好處。我責備WordPress。 – icktoofay

-1

試試這個:

extracturl = function() 
{ 
    url1 = location.href; 
    url2 = url1.split('.'); 
    url3 = url2[0].replace(/http:\/\//gi,''); 
    return url3; 
} 

它爲我工作。 它需要類似「http://example.com/」並返回「example」。 (不含引號和句點)。

+0

爲什麼不從'location.hostname'開始? – icktoofay

0

問題是您正在使用警報方法。

我的意思是 - 從代碼片斷和警報中確定失敗點的位置非常困難。

但是,還有另外一種方法可以使問題如水晶般清晰;這是我的建議;它是JavaScript Step-Debugger。

在Chrome或FireFox中,可以遍歷代碼行並檢查每行的值,以確定它是否符合您的期望。

說明步調試Chrome瀏覽器: 1.添加關鍵字調試像這樣,並註釋掉快訊:

//WORKS! 
debugger; 
var url = window.location; 
//alert(url); 

- This will instruct the debugger to pause runtime execution, so that we can see how each line executes. 
  1. 隨着Chrome的網頁上,右鍵單擊屏幕選擇'檢查元素'。

    • 這將打開開發工具,使調試器將停止。
  2. 刷新頁面,調用可能需要執行代碼的任何事件。

    • 代碼執行應該在你的調試器行暫停。
  3. 現在你可以做的事情真的很強大。點擊逐步按鈕,將帶你逐行。

    • 現在您可以將鼠標懸停在變量上以查看狀態。
  4. 我懷疑的是,url.split()是在某些方面可能是錯誤的。

    • 我看了看,我所看到的是一個錯誤: 「網址有沒有方法分開」

    • 這是有道理的,因爲返回的對象不是字符串,但一個位置。

  5. 所以我所做的就是看位置的成員: 主機,主機名,HREF,產地,路徑...

  6. 我認爲你需要拆分其中的一個,這取決於根據您的需求。

    • 例如:

      VAR URL = window.location的

      變種url_parts = url.href.split( '/');

      //本文的url_parts是 // [「http:」,「」,「stackoverflow.com」,「questions」,「10987267」,「why-can-i-only-run-1- JavaScript的內部函數「]

希望有所幫助。 一切順利! 納什

相關問題