未捕获的安全错误:无法在“历史记录”上执行“replaceState”:无法在原始“null”的文档中创建
Posted
技术标签:
【中文标题】未捕获的安全错误:无法在“历史记录”上执行“replaceState”:无法在原始“null”的文档中创建【英文标题】:Uncaught SecurityError: Failed to execute 'replaceState' on 'History': cannot be created in a document with origin 'null' 【发布时间】:2015-12-03 21:40:18 【问题描述】:我真的没有收到这个 chrome 错误:
未捕获的安全错误:无法在“历史记录”上执行“replaceState”:无法在来源为“null”的文档中创建
在 Edge、Firefox 和 IE 中没有错误。
我使用 jquery 1.11.1 和 jquery mobile 1.4.5。
这是我的索引文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/xy.min.css" />
<link rel="stylesheet" href="css/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="css/jquery.mobile.structure-1.4.5.min.css" />
<title></title>
</head>
<body>
<div data-role="page">
<div data-role="header" data-add-back-btn="true">
<p align="center">Test</p>
</div>
<ul data-role="listview" data-filter="true" data-filter-placeholder="Kategorie suchen" data-inset="true" data-count-theme="b">
<li><a href="assets/beck/index.html" data-rel"dialog" rel ="external">Bäckereien </a></li>
</ul>
</div>
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
</body>
</html>
非常感谢任何帮助!
【问题讨论】:
没有您的 javascript 代码,我们将无法为您提供太多帮助... @D4V1D 我没有更改 jquery 我只是加载它。 您是否正在运行网络服务器(本地或非本地)? @A.Wolff 不,我不跑。它以前没有一个工作。我应该使用一个吗? @olivier 你应该使用一个,听起来像是新更新 chrome 安全功能的变化(也许是为了修复一个安全漏洞,谁知道?)。在本地服务器上测试它,如果它解决了您的问题,请不要犹豫,在这里发布答案。如果没有,请不要犹豫,发表评论 【参考方案1】:添加这个:
<script>
$(document).bind('mobileinit',function()
$.mobile.changePage.defaults.changeHash = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
);
</script>
就在 jquery.mobile-1.4.5.min.js 之前
这适用于 Windows 上的 android WebViewClient 和 Chrome。
【讨论】:
感谢这个脚本。我担心我的 Android 应用程序会变得无用(仅使用带有本地文件的 Webview) 是的,经过几个月的工作,我能体会到那种感觉。让我们希望他们不会改变其他任何事情。 我发现脚本中只需要$.mobile.pushStateEnabled = false;
谢谢。你真的帮了我!
我只是按照 html 末尾的建议添加了 $.mobile.pushStateEnabled = false;
并且它起作用了。【参考方案2】:
我的解决方案是我必须运行一个网络服务器。这是一项新的 chrome 安全功能,不会根据 Chromium Bug Post 进行更改。
感谢 A. Wolff!
【讨论】:
哪里说这个错误不会被修复?我发现以下问题仍然存在 - code.google.com/p/chromium/issues/detail?id=528681 最快最简单的方法是:python -m SimpleHTTPServer 8080 @zumek 这不是错误。他们决定了。【参考方案3】:这也可能是在处理本地 HTML 文件时由 Turbolinks (HTML pushState) 引起的。
【讨论】:
以上是关于未捕获的安全错误:无法在“历史记录”上执行“replaceState”:无法在原始“null”的文档中创建的主要内容,如果未能解决你的问题,请参考以下文章
sdk-3.1.1.js:1 未捕获类型错误:无法在“URL”上执行“createObjectURL”:未找到与提供的签名匹配的函数
未捕获的安全错误:无法从“HTMLIFrameElement”读取“contentDocument”属性
未捕获的 DOMException:无法在“IDBObjectStore”上执行“删除”:事务未处于活动状态
未捕获的 DOMException:无法在“范围”上执行“setStart”:偏移量大于节点的长度