当我用requestAnimationFrame
下面的代码来做一些本机支持的动画时:
var support = {
animationFrame: window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame
};
support.animationFrame(function() {}); //error
support.animationFrame.call(window, function() {}); //right
直接致电support.animationFrame
会给…
未捕获的TypeError:非法调用
在Chrome中。为什么?
在您的代码中,您正在将本机方法分配给自定义对象的属性。当您调用时support.animationFrame(function () {})
,它将在当前对象(即支持)的上下文中执行。为了使本机requestAnimationFrame函数正常工作,必须在的上下文中执行它window
。
因此,此处的正确用法是 support.animationFrame.call(window, function() {});
。
警报也会发生相同的情况:
var myObj = {
myAlert : alert //copying native alert to an object
};
myObj.myAlert('this is an alert'); //is illegal
myObj.myAlert.call(window, 'this is an alert'); // executing in context of window
另一个选择是使用Function.prototype.bind(),它是ES5标准的一部分,并且在所有现代浏览器中都可用。
var _raf = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame;
var support = {
animationFrame: _raf ? _raf.bind(window) : null
};
问题内容: 我正在创建一个lambda函数,该函数执行带有具体参数的第二个函数。此代码在Firefox中有效,但在Chrome中不起作用,其检查器显示一个奇怪的错误。我的代码有什么问题? 问题答案: 控制台的日志功能希望(内部)引用控制台。考虑下面的代码,它可以复制您的问题: 这是一个有效的示例,因为它绑定到您的make函数中: 这也可以
问题内容: 我正在尝试做一些相当简单的事情,但是由于我可能不够出色而无法搜索文档,因此无法正常工作。 我有一个运行正常的内联JS,看起来像这样: 由于各种原因,我试图分离JS,而这正是我遇到的障碍。 我创建了以下测试页面,该页面给出了错误消息: 我唯一能找到的问题就是这样的问题,它无法使用但应该处理(这很适合我,因为我将其倒在一些图像上),所以我尝试添加以下无济于事: 在此先感谢您指出我做错了什么
问题内容: 我有两个选择元素,A和B:当A的选择的选项更改时,B的选项必须相应地更新。A中的每个元素都暗示着B中的许多元素,这是一对多的关系(A包含国家,B应该包含位于给定国家中的城市)。 该函数应运行异步请求: 为了更新B的选项,我在A的事件中添加了一个函数调用。这是触发onChange事件(of )时运行的函数: } 我已经阅读了JQuery文档,该文档可以是数组(键值对)。我输入以下错误:
我正在开发一个chrome扩展来捕获chrome开发工具中的网络选项卡相关数据。我的代码如下 manifest.js
未捕获的TypeError:无法读取未定义的属性“local” 我做错了什么?
未捕获的TypeError:无法读取未定义的属性“config” 我的问题在下面的代码中,