Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript显示哈希(或片段标识符)_Javascript_Jquery - Fatal编程技术网

使用Javascript显示哈希(或片段标识符)

使用Javascript显示哈希(或片段标识符),javascript,jquery,Javascript,Jquery,我的DNS主机将一个域指向我的网站(隐形转发),因此我网站中显示的域类似于www.mydomain.com,我的网站基于SPA(单页)设计,页面通过片段标识符访问,如(#home,#aboutus等) 问题是转发是隐形的,因此浏览器中的URL在导航到页面时不会显示哈希 我如何用Javascript处理这个问题?如何在浏览器URL中创建哈希(#home,#aboutus) 这可以用简单的JS轻松完成吗?或者我需要jQuery来实现这一点?以下是我在SPA中管理器链接的方式: 每个锚标记(或按钮)都

我的DNS主机将一个域指向我的网站(隐形转发),因此我网站中显示的域类似于
www.mydomain.com
,我的网站基于SPA(单页)设计,页面通过片段标识符访问,如(#home,#aboutus等)

问题是转发是隐形的,因此浏览器中的URL在导航到页面时不会显示哈希

我如何用Javascript处理这个问题?如何在浏览器URL中创建哈希(#home,#aboutus)


这可以用简单的JS轻松完成吗?或者我需要jQuery来实现这一点?

以下是我在SPA中管理器链接的方式:

每个锚标记(或按钮)都会得到如下显式哈希:

<a href="#action=doSomething&param1=5&param2=10">My Title</a>
var urlHash = "#" + $.param({ action:"doSomething", param1: 5, param2: 10});
我根本没有将任何事件处理程序附加到这些锚。它们实际上只是HTML中的普通锚。相反,我使用委托事件来捕获hashchange事件。一个非常简单的方法是使用。这样做有很多好处,包括用户可以在SPA中为片段添加书签,或者在电子邮件中发送这些URL,因为它们与普通URL一样显示在浏览器中。它们也会进入历史,所以用户可以像普通网站一样使用后退和前进按钮

下面是侦听hashchange事件的示例代码,每当用户单击上面的锚时,都会触发该事件:

    //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
    });

我不确定我是否正确理解你的答案,但是,尽管DNS隐藏转发,我需要在浏览器URL中显示哈希。