0

好的,我编写了自己的 CMS,它使用 jquery、php、.htaccess 重定向到幕后的 index.php 和 HTML5 History API。现在我遇到了我见过的最奇怪的错误。

在我的电脑上,在我的安卓手机上,在我尝试过的大多数设备上,一切都完美无缺。

但是,在我朋友的一台电脑和 iPhone 上,无论我使用什么浏览器,甚至是我自己使用的最新 chrome,都会发生 Dom Exception 18(在 javascript 控制台中),并停止执行所有 ajax 代码,从而破坏 CMS。

错误指向这一行:

History.replaceState({location:href}, "", href);

只是一个常规的 history.js 语句,可以完美地与我的浏览器配合使用。我实际上使用了普通的 html5 历史 API,但将其更改为 history.js 实现以查看它是否有帮助,但没有。如果我删除初始的 replaceState,当我单击任何链接时会发生错误,因此这是第一个触发 Dom 错误的历史推送事件。

我试图搜索 Dom Exception 18,但所有答案似乎都与特定包或操纵来自不同主机的图像有关。

您可以在www.roopesalminenjakoirat.fi中亲自查看它是否适合您。如果发生,Dom Exception 18 应该立即出现在检查器中。它不会破坏页面,因为我在注销时不使用ajax,但是如果您看到错误请报告。

请帮忙!

4

1 回答 1

0

找到了!显然,这与是否具有“www”的基本元素有关。目前我刚刚<base href="http://roopesalminenjakoirat.fi" />,所以我之前没有遇到过这个问题,因为我通常不输入www,但是我的朋友因为他写了www而发生了这个问题!

所以答案是将基本元素 www-part 与用户是否键入它进行匹配,否则 replaceState 会引发安全错误!

于 2013-07-26T03:45:54.607 回答