这是我的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();
});
});
答案 0 :(得分:1)
在本地声明href
,例如const href = $(this).attr("href");
或var href = $(this).attr("href");
将history.pushState
的第一个参数设置为{}
而不是""
,
检查$("ul#nav li a").attr("href")
是否为有效的URI 字符串:console.log($("ul#nav li a"), typeof $("ul#nav li a").attr("href") === "string");
+
当您使用本地文件系统上的资源执行代码时,您已获得SecurityError
。
您在本地文件系统(file:///
)上执行代码。由于Same-origin policy,它会生成SecurityError
。
file:
URIs 似乎没有这方面的说明; 实现(浏览器)定义的。 Chrome 对此有最强的政策。第二个最强的是 Firefox ,第三个是 Opera 。
您必须将它们全部放入您的网络服务器并在服务器上运行,或set allow-file-access-from-files
flag option in Google Chrome,security.fileuri.strict_origin_policy
setting for FireFox。