2011-03-27 76 views
3

我是JS的初學者。 我正在使用網站上的一些JavaScript,並且我只想使用JS的1個文件來確定頁面之外的操作。事情是這樣的:獲取調用JS函數的HTML文檔的名稱

function registerEvents(){ 
    NameOfHTMLDocument = //?? Get the name of the document that called registerEvents function. 
    switch(NameOfHTMLDocument) 
    { 
    case:"homepage": 
      hmp_btn = document.getElementById("hmp_btn"); 
      hmp_btn.onclick=otherFunction; 
      break; 
    case:"otherPage": 
      elem = document.getElementById("elemID"); 
      elem.onclick=fooFunction; 
      break; 
    //etc... 
} 
} 

這個函數被調用,由所有網頁「繼承」一個<body onload="registerEvents()">

問題是,我怎樣才能得到「NameOfHTMLDocument」?因爲我不希望JS在嘗試獲取不存在的元素時開始做奇怪的事情。

我發現我可以獲取DOM的URL,然後使用它來獲取我想要的字符串,但我不確定這是否是更好的方法。

如果你有更好的建議,這將是很好的。

+0

你想獲得調用函數的頁面的URL? – 2011-03-27 22:34:29

+1

我試圖避免使用URL,得到這個你可以使用:location.pathname.split('/')。pop();你會得到一個字符串數組,然後「玩」一下它,或者獲得一個document.URL。 – ElHacker 2011-03-27 22:38:22

回答

2

首先,我真的建議你創建在功能HTML文檔單獨的腳本標記,只使用了頁面和普通的功能在單獨的文件上有以下幾個原因:

  • 無碼污染
  • 易於變化的
  • 小的軟件,

其次,你可以使用window.location.pathname DOM可變開關,它是域後一切 代替主頁等。

URL = vader.samplesite.com/light/saber/

window.location.pathname = /光/軍刀/

(看在http://www.developertutorials.com/questions/question/q-242.php

+0

謝謝,這工作正常。 – ElHacker 2011-03-28 00:23:13

0
window.location.pathname 

所有你需要做的是解析,但我相信你會弄清楚:)如果沒有,留下評論。

1

在你的<body onload="registerEvents()">通過你的事件函數傳遞對象this(DOM中的BODY),如:<body onload="registerEvents(THIS)">

在函數本身中,調用您傳遞的對象,如object.ownerDocument.URL以獲取包含HMTL文檔名稱的URL或object.ownerDocument.title以獲取頁面標題。