我正在使用Meteor应用程序,该应用程序主要希望存在于<iframe>
内。
meteor create iframe-test
cd iframe-test
meteor add iron:router
meteor
http://localhost:3000
的工具创建测试页。我在下面添加了一个示例jsbin和git repo的链接。
18:26:56.356 Exception in defer callback: onLocationChange@http://localhost:3000/packages/iron_router.js?7b16fe70bccff9182aca02afb2ccd7708ac57c64:2227:55
Tracker.Computation.prototype._compute@http://localhost:3000/packages/tracker.js?6d0890939291d9780f7e2607ee3af3e7f98a3d9c:323:41
Tracker.Computation@http://localhost:3000/packages/tracker.js?6d0890939291d9780f7e2607ee3af3e7f98a3d9c:207:41
Tracker.autorun@http://localhost:3000/packages/tracker.js?6d0890939291d9780f7e2607ee3af3e7f98a3d9c:564:48
Router.prototype.start@http://localhost:3000/packages/iron_router.js?7b16fe70bccff9182aca02afb2ccd7708ac57c64:2223:68
Router/ eval:23:19959
1 meteor.js:944:47
Meteor.defer
第44行iron-router/lib/router.js
来电(在铁路由器存储库中)关于可能发生的事情的任何想法?
感谢您的帮助!
作为参考,我已将此报告为潜在问题here,尽管我并不一定确信问题在于铁路由器本身。我怀疑这与FireFox本身的HTML5 History API实现有某种关系,由于某种原因,它在<iframe>
中的行为有所不同。
通过在设置其位置之前动态创建<iframe>
,似乎可以解决此问题:
var body = document.getElementsByTagName('body')[0];
var iframe = document.createElement('iframe');
body.appendChild(iframe);
iframe.src = 'http://localhost:3000';
仍然认为这与FireFox如何在<iframe>
中设置HTML5历史记录有关。如果您在两个不同的iframe中查询history.state
,则可获得以下结果:
<iframe>
history.state // Object { initial: true }
<iframe>
history.state // null