如何在url包含锚点时调用js函数

时间:2012-04-30 14:42:12

标签: javascript jquery

我有一个网站example.com。 当我访问此页面example.com/#login时,我想调用js警报功能。 我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

// example.com/#login
if (window.location.hash) {
    alert("URL has hash");
    var hash = window.location.hash; // = "#login"
    callMyFunction();
}

答案 1 :(得分:1)

如果你想要一个好的跨浏览器库来处理url,我会看看History.js

https://github.com/browserstate/History.js/

History.Adapter.bind(window,'statechange',function(){ 
    // Note: We are using statechange instead of popstate
    var State = History.getState(); 
    // Note: We are using History.getState() instead of event.state
    History.log(State.data, State.title, State.url);
});

还有Backbone.js,它可能比你需要的更多,因为它是一个MV *框架,但它有一个路由器的概念也很有帮助。

http://backbonejs.org/#Router

答案 2 :(得分:0)

您可以查看#login的网址。如果它存在则调用该函数。 http://www.webmasterworld.com/forum91/216.htm

我推荐jQuery,这个方法: http://jquery-howto.blogspot.co.uk/2009/09/get-url-parameters-values-with-jquery.html

答案 3 :(得分:0)

我认为您可以检查window.location.hash是否不是假值,以检查网址中是否有哈希值。

例如:

function someAlert(message) {
    // This would be your alert function. This is just for example
    alert(message);
}
// The "if the URL has a hash":
if (window.location.hash) {
    someAlert("Hello URL with a hash visitor!"); // "Hello URL with a hash visitor!" can be whatever you want
}

如果你想保存后面的内容并包括哈希,只需使用:

var hash = window.location.hash; // hash would be "#login" if the URL was http://example.com/#login