2013-04-23 61 views
0

我在IE7中遇到了Meteor应用程序的大量问题。这可能是由于至少有一个Meteorite软件包(尤其是我怀疑的路由器,它特别不支持IE7)。我收到了几个JavaScript错误,并且空白页面加载了一个空标签。在流星之前立即执行JS

IE7 bug只影响1%的用户,但我只是讨厌这个想法,一些人会访问该网站,看到一个空白页面,没有别的,并认为这是一个糟糕的或傍晚的项目。

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

但是,在应用程序的其他部分崩溃之前,我找不到任何重定向到该页面的方式,所以我的重定向代码从不运行(无论如何,它在我的机器上运行)。我试过把它放在lib/的文件中,我试过用Meteor.startup() *,我同时做过两个!但最终当你在浏览器中点击网址时,Meteor开始采取行动,开始加载依赖关系,并沿着线路的某个地方,这一切都打破了。

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

*这似乎是从client_startup.js调用的,它在这样做之前专门等待DOM准备就绪。在获取我的代码之前,它会进行路由,呈现模板等,这对我来说已经太迟了。

回答

0

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

1)流星自己的包

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

3)已经传递到Meteor.startup功能上市()在某处您的.js/.coffee文件

4)你的.js/.coffee文件的剩余部分,在一个序列Structuring Your App

下记录的最关键的是对我来说,的顺序0文件和产生的.meteor/packages文件似乎确定了什么order the packages get loaded以及。

我的计划是现在写我自己的小智能包检测IE7或更低,并做一个重定向。我会把它放在packages作为第一项,所以它会在Router或其他任何可能导致应用程序崩溃的IE7上运行。将更新以说明是否可行。

更新:它的工作!我在大气上有published the package,就这么简单。