在Meteor之前立即执行JS

时间:2013-04-23 15:55:51

标签: meteor

我在IE7中使用Meteor应用程序遇到了大量问题。这可能是由于至少有一个陨石包(特别是我怀疑的路由器,特别是不支持IE7)。我收到了几个JavaScript错误,空白页面加载了一个空标记。

IE7漏洞仅影响1%的用户,但我只是讨厌一些人会访问该网站,看到一个空白页面,而不是其他任何东西,并认为这是一个糟糕的或一夜之间的项目。

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

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

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

*这似乎是从client_startup.js调用的,它专门等待DOM准备就绪。它在进入我的代码之前进行路由,渲染模板等,这对我来说太迟了。

3 个答案:

答案 0 :(得分:0)

如果您愿意更换Meteor来源,可以去这里

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

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

答案 1 :(得分:0)

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

1)Meteor自己的套餐

2)您的包裹,即smart.json

中列出的包裹

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

4).js / .coffee文件的其余部分,按Structuring Your App

下记录的顺序排列

对我来说最重要的是,smart.json文件和生成的.meteor/packages文件的顺序似乎也决定了order the packages get loaded

我的计划是现在编写我自己的小智能包来检测IE7或更低版​​本并进行重定向。我将把它作为第一项放在packages中,因此它会在Router或其他任何可能使应用程序在IE7上崩溃的内容之前运行。将更新说是否有效。

更新:它有效!我{At}气氛published the package,很简单。

答案 2 :(得分:0)

相关问题在这里:Meteor Script Loading Order。 解决方案正在使用Inject-initial。 (你的剧本/内容绝对是最初的,甚至在流星的核心之前)