特定于页面的javascript函数

特定于页面的javascript函数,javascript,html,Javascript,Html,我在一个小型库中为我的项目准备了所有javascript代码。 有些函数只针对特定的页面URL运行,但当单击没有href属性而具有元素id的链接时,如果该链接的href属性被刷新,则该函数不会运行。 知道问题出在哪里吗? 例如 当url为http://localhost/pheedbak/users/home 但是当url更改为http://localhost/pheedbak/users/home#directed-pheeds,该函数不运行 代码是这样的 url = "http://loca

我在一个小型库中为我的项目准备了所有javascript代码。 有些函数只针对特定的页面URL运行,但当单击没有href属性而具有元素id的链接时,如果该链接的href属性被刷新,则该函数不会运行。 知道问题出在哪里吗? 例如 当url为
http://localhost/pheedbak/users/home
但是当url更改为
http://localhost/pheedbak/users/home#directed-pheeds
,该函数不运行

代码是这样的

url = "http://localhost/pheedbak/users/home";

    if(window.location.href == url)
    { 
      pheeds.LoadLatestPheeds();
    }

您可以尝试此操作,即使存在其他查询字符串或哈希ID,此操作也将匹配:

if(window.location.href.indexOf(url) > -1)
这应该行得通——只看
#


注意。未测试--可能包含打字错误/bug。

您需要去掉重要部分。乙二醇

var url = 'pheedbak/users/home';

if(window.location.href.replace(/.*?\/\/.*?\/(.*?)(?:\#|\?).*/,'$1') == url)
{ 
  pheeds.LoadLatestPheeds();
}
这也适用于包含GET变量(例如/users/home?id=2)的url,无论域或协议如何

域和协议相关版本:

var url = 'http://localhost/pheedbak/users/home';

if(window.location.href.replace(/(.*?)(?:\#|\?).*/,'$1') == url)
{ 
  pheeds.LoadLatestPheeds();
}

不知道你的意思。示例?这意味着脚本依赖于具有正常url的链接元素,锚链接失败。如何单击
href
属性?虽然对于给定的示例,这可能不会出现问题,但使用这种方法匹配url不是最佳做法。例如,这还会将查询与“/path/to/whatever?url=”匹配,如果您使用的是相对路径,则匹配将一起关闭。最好尽可能精确。当然,在他的例子中,这是不太可能发生的。。但这就是最佳实践的意义所在。防止墨菲定律。
var url = 'pheedbak/users/home';

if(window.location.href.replace(/.*?\/\/.*?\/(.*?)(?:\#|\?).*/,'$1') == url)
{ 
  pheeds.LoadLatestPheeds();
}
var url = 'http://localhost/pheedbak/users/home';

if(window.location.href.replace(/(.*?)(?:\#|\?).*/,'$1') == url)
{ 
  pheeds.LoadLatestPheeds();
}