首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Javascript显示散列(或片段标识符)

用Javascript显示散列(或片段标识符)
EN

Stack Overflow用户
提问于 2013-11-15 07:50:23
回答 1查看 144关注 0票数 0

我的DNS主机将域名指向我的网站(隐身前进),所以我网站中显示的域就像www.mydomain.com,我的网站是基于SPA (单页)设计的,页面是通过片段标识符(#home,#aboutus,等等)访问的。

问题是前向是隐形的,所以浏览器中的URL在导航到页面时不会显示散列。

我如何处理这个与Javascript?如何在浏览器URL中生成散列(#home,#aboutus)?

这能很容易地用普通的JS来完成吗?或者我需要jQuery来完成这个任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-15 11:13:40

下面是我如何在SPA中管理链接:

每个锚标记(或按钮)都得到如下显式散列:

代码语言:javascript
复制
<a href="#action=doSomething&param1=5&param2=10">My Title</a>

您可以像下面这样轻松地生成像上面这样的哈希:

代码语言:javascript
复制
var urlHash = "#" + $.param({ action:"doSomething", param1: 5, param2: 10});

我根本不把任何事件处理程序附加到这些锚上。它们实际上只是HTML中的普通锚点。相反,我使用委托事件来捕获哈希更改事件。一个非常简单的方法是使用JQuery烧烤插件。这样做有许多好处,包括您的用户可以在SPA中标记片段,或者在电子邮件中发送这些URL,因为它们就像普通的URL一样出现在浏览器中。他们也进入历史,以便用户可以使用后退和前进按钮,就像正常的网站。

下面是侦听散列变化事件的示例代码,只要用户单击上面的锚点,就会触发这些事件:

代码语言:javascript
复制
    //Global event handler for hash change for above type of anchors
    $(window).bind("hashchange", function (e) {
        var action = e.getState("action");
        if (action === "doSomething") {
            var param1= e.getState("param1");
            var param2= e.getState("param2");

            doSomething(param1, param2);
        }
        //else ignore unknown state
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19996066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档