使用直接链接触发onClick()事件

时间:2011-08-27 22:29:56

标签: javascript html

我有一个带导航栏的网站。单击链接时,它会使用onClick()处理程序更改页面内容。

例如。如果点击了关于我们的链接,则网页内容将更改为关于我们的内容,并且网址将变为xxxxx.com/#about。但是,当直接链接到xxxxx.com/#about时,它会打开默认的index.php页面。

如何直接链接到网页,就好像它是onClick()

4 个答案:

答案 0 :(得分:4)

您可以在页面加载时调用onclick中使用的函数。

window.location.hash 

会在您的示例中为您提供#about,因此您可以加载(或显示)相关内容。

答案 1 :(得分:1)

您需要在页面加载时获得#something,然后如果找到,请使用它调用onclick函数。

tag = /#[^\s]+/.exec(document.location.href);
tag = tag.substring(1);
// you have what you want

答案 2 :(得分:0)

所以你用Ajax加载内容?

快速而肮脏的方法是查看网址

document.location.href

你可以像这样得到你正在寻找的行动

// get the url and split it at the "#" character into an array
var urlSplit = document.location.href.split("#");

// the 2nd item in the array will be the page
var page = urlSplit[1];

现在你知道'page',你可以调用任何加载页面内容的函数

答案 3 :(得分:0)

#about只是指向页面中的某个部分,而不是实际更改页面。我猜测onClick事件使用AJAX刷新页面,并通过更改document.location或类似内容更新显示给用户的URL。

一般来说,我会说不要使用AJAX进行导航。如果您要更改为其他页面,请让浏览器进行适当的更新,以便后退按钮可以按照用户的预期进行操作。当您动态更改页面的某些部分时,请使用AJAX。

如果你真的想要AJAX导航,请按照strada的建议使用window.location.hash。

但是请注意,在使用大量Javascript语言结构时,IE很容易遇到问题。 javascript和DOM对象之间的循环引用以及闭包很快就会导致内存泄漏。其他浏览器也受到影响,但IE(包括9)似乎受到的影响最大。如果刷新页面,浏览器就很容易抛弃所有这些内容。