我正在使用'fancy box
'而我正在尝试将我的网址更改为
fancy box
的网址,因此我尝试使用History.pushState()
但它会造成错误
错误:
未捕获的SecurityError:无法在“历史记录”上执行“pushState”:无法在原点为“http://localhost:28587”的文档中创建URL为“about:blank”的历史状态对象
我的代码:
var _url = window.location.href;
setInterval(function () {
if (($(".fancybox-iframe").length > 0))
{
if(window.location.href != $('.fancybox-iframe').contents().get(0).location.href)
{
history.pushState(null, null, $('.fancybox-iframe').contents().get(0).location.href);
}
}
else
{
if(window.location.href != _url)
{
history.pushState(null,null, _url);
}
}
}, 80);
我会搜索它并找不到答案,请帮助我
或建议我做更好的解决方案。
(我发现这个:Javascript history.PushState not working?但我不明白我的代码中的答案有什么问题)
修改
另一个问题是,当我在浏览器中按“返回”时,网址会发生变化,但实际上没有加载,为什么?
答案 0 :(得分:1)
history.pushState
有安全限制,其中一个不允许应用程序将跨源url-s推送到历史记录。这种明显的行为,你可以阅读更多有关你链接的问题。
查看您的错误消息我猜您的源服务器是http://localhost:28587。无论如何,在回答我的评论时,你说你试图推送带有http://localhost:27477的网址。你可以注意到它们有不同的端口,从机器的角度来看肯定是不同的。
我不能推荐你绝对正确的解决方法。这取决于您的应用程序逻辑。首先,您可以使用一个端口来执行代码。其次,您可以使用某种配置为侦听两个端口的代理(如nginx)。第三,如果没有破坏应用程序的逻辑,你可以推送相对路径(/PerPage/content.php?d=1&f=1
)。尝试谷歌解决方案可以接受。