0

我在 IE7 中使用 Meteor 应用程序时遇到了很多问题。这可能是由于至少一个 Meteorite 包(尤其是我怀疑的路由器,它特别不支持 IE7)。我收到了几个 JavaScript 错误,并且加载了一个带有空标签的空白页面。

IE7 错误仅影响 1% 的用户,但我只是讨厌某些人会访问该站点并看到一个空白页面而没有其他内容的想法,并认为这是一个糟糕的或一夜之间的项目。

我试图显示一个我写的简短页面,解释不支持 IE7 及更低版本,用户可以升级她的浏览器,或使用 Chrome Frame。如果您点击<myapp>/noie.html,您可以看到它,因为它保存在public/文件夹中。

但是,在应用程序的其余部分崩溃之前,我找不到任何方法来重定向到该页面,因此我的重定向代码永远不会运行(无论如何在生产中,它在我的机器上运行)。我试过把它放在一个文件中lib/,我试过使用Meteor.startup()*,我同时做了两个!但最终,当您在浏览器中点击 url 时,Meteor 开始行动,开始加载依赖项,并且沿线的某个地方,一切都中断了。

如果我可以让重定向代码成为最先运行的东西之一,那么一切都会好起来的。

*this 似乎是从 调用的client_startup.js,它专门等待 DOM 在这样做之前准备好。它在获取我的代码之前进行路由、渲染模板等,这对我来说太晚了。

4

3 回答 3

1

我想我知道该怎么做了。您可以通过单击 Meteor 页面(在开发模式下提供)上的“查看源代码”来查看脚本的加载顺序。一般来说,它似乎是:

1) Meteor 自带的包

2) 你的包裹,即那些在smart.json

3) 已在 .js/.coffee 文件中某处传递给 Meteor.startup() 的函数

4) 其余的 .js/.coffee 文件,按照Structuring Your App中记录的顺序

对我来说最关键的是,smart.json文件和生成.meteor/packages文件的顺序似乎也决定了包的加载顺序

我现在的计划是编写我自己的小智能包,它可以检测 IE7 或更低版本并进行重定向。我会将它packages作为第一项放入,因此它会在路由器或其他任何可能导致应用程序在 IE7 上崩溃的东西之前运行。将更新说是否可行。

更新:成功了!我已经在 Atmosphere 上发布了这个包,虽然很简单。

于 2013-04-25T14:35:43.450 回答
0

如果你愿意改变你的 Meteor 源,你可以去这里

https://github.com/meteor/meteor/blob/release/0.6.2/tools/server/server.js#L304

并检查request.browser,然后如果不支持浏览器,则返回您自己的“抱歉,不支持此浏览器”HTML 而不是常规应用程序 html。

于 2013-04-23T22:01:36.460 回答
0

相关问题在这里:Meteor Script Loading Order。解决方案是使用Inject-initial。(您的脚本/内容将绝对是一开始,甚至在流星核心之前)

于 2014-08-20T14:13:16.720 回答