2011-03-27 40 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以获取页面标题。