Rob*_*etz 6 javascript safari ios ember.js
我有一个我正在开发的网站,可以在Chrome桌面上完美运行(Windows 8.1和OS X Mavericks)
当我在iOS 7或Safari 7.0.2上运行它时,控制台出现错误,指出加载路径时出错:checkIfLoggedIn'
它在消息中指定的成员不是路由,它是一个返回promise的方法.当我通过ember代码调试来弄清楚出了什么问题时,我发现它拒绝承诺的原因是"找不到变量:承诺"
我不能在这里发布我网站上的实际代码,所以我开始创建一个再现错误的小提琴,我能够想出这个:
http://jsfiddle.net/NQKvy/851/
这适用于桌面版Chrome(Windows 8.1和OS X Mavericks),但在iOS 7或Safari 7.0.2上会向控制台抛出以下错误'ReferenceError:找不到变量:Promise'
任何人都有任何想法为什么这不起作用?
回顾一下:
这让我相信这是一个Safari错误(如果我没记错的话)Chrome for iOS使用Safari控件来渲染页面而不是Chromium
这是我用来生成错误的代码:
App.ready = function() {
var asdf = new Promise(function (resolve) {
var i = 1;
i++;
resolve.call(this,i);
}).then(function (result) {
alert('I: ' + result);
});
};
Run Code Online (Sandbox Code Playgroud)
Rob*_*etz 14
事实证明,在Safari上,您必须在创建承诺时使用完全限定名称,否则它将无法工作:
App.ready = function() {
var asdf = new Ember.RSVP.Promise(function (resolve) {
var i = 1;
i++;
resolve.call(this,i);
}).then(function (result) {
alert('I: ' + result);
});
};
Run Code Online (Sandbox Code Playgroud)
注意'new Ember.RSVP.Promise'而不是'new Promise'.这似乎为我解决了这个问题.
| 归档时间: |
|
| 查看次数: |
7291 次 |
| 最近记录: |