Outlook 和 IE11 中的 Turbolinks 未指定错误

Unspecified error with Turbolinks in Outlook and IE11

我们在使用 IE 作为其浏览器引擎的 Outlook 加载项中获得 unspecified error。错误来自我们编译的 application.js javascript 跟踪到 Turbolinks 的文件。

当我们在 Outlook 加载项集成中加载应用程序时会发生此错误。有一个加载页面确定用户是否需要登录,如果不需要,将他们重定向到我们的应用程序。

这是您苦苦思索数天或数周后发现仅需一行即可修复的错误之一。

TLDR;

window.location.replace(url) 很危险,因为它不更新历史记录。这意味着用户将无法单击后退按钮。但是,这也意味着像 Turbolinks 这样操纵历史的框架你必须小心。

改为使用: window.location.assign(url)

长话短说: 在确定是提示登录还是重定向到应用程序的 Outlook Add-In 登录页面中,我们使用了 window.location.replace。出于某种原因(我无法完全解释)当我们的应用程序加载时,Turbolinks 处理试图在 window 的历史对象上调用“replaceState”。

出于某种原因,当您访问的第一个页面使用 replace 重定向时,在 IE 中存在导致 unspecified error 的空白历史记录。

解决方法就是使用 location.assign(url).

进行正确的历史添加重定向