history.pushState不起作用

时间:2016-10-02 05:44:34

标签: javascript ajax

这是我的JS。我只是在我的机器上本地运行此代码,我无法获取要更改的URL。这有什么不对吗?

$(document).ready(function() {

     $('#content').load('content/index.html'); 

      $('ul#nav li a').click(function(e) {

        href = $(this).attr("href");

        $('#content').load('content/' + href + '.html');

        history.pushState('', 'New URL: '+href, href);

        e.preventDefault();
    });
});

1 个答案:

答案 0 :(得分:1)

  1. 在本地声明href,例如const href = $(this).attr("href");var href = $(this).attr("href");

  2. history.pushState的第一个参数设置为{}而不是""

  3. 检查$("ul#nav li a").attr("href")是否为有效的URI 字符串console.log($("ul#nav li a"), typeof $("ul#nav li a").attr("href") === "string");

  4. +

    您的问题

    当您使用本地文件系统上的资源执行代码时,您已获得SecurityError

    发生这种情况的原因

    您在本地文件系统(file:///)上执行代码。由于Same-origin policy,它会生成SecurityError

    Same-origin policy for file: URIs

    似乎没有这方面的说明; 实现(浏览器)定义的 Chrome 对此有最强的政策。第二个最强的是 Firefox ,第三个是 Opera

    解决方案

    您必须将它们全部放入您的网络服务器并在服务器上运行,或set allow-file-access-from-files flag option in Google Chromesecurity.fileuri.strict_origin_policy setting for FireFox