我只想获得文档的scrollTop并使用这个answer的代码。但我得到的是一个“窗口”物体。我已经测试了IE10,Chrome和Firefox。这是我的代码:
var doc = document.documentElement, body = document.body;
var left = (doc && doc.scrollLeft || body && body.scrollLeft || 0);
var top = (doc && doc.scrollTop || body && body.scrollTop || 0);
scroll = {
top: (doc && doc.scrollTop || body && body.scrollTop || 0),
left: (doc && doc.scrollLeft || body && body.scrollLeft || 0)
};
console.log(scroll.top); // return 0
console.log(top); // return object 'Window'我认为这是一个简单的问题,但我不知道它为什么会返回一个对象。
发布于 2013-08-28 16:48:51
变量top在窗口作用域中。我可以用window.top或window.left来引用它。window.top的问题已经定义好了。window.top指的是层次结构中最顶部的窗口。浏览器不允许您设置该变量。
您需要将它定义为不同的变量,或者更改作用域,这样它就不会与全局窗口命名空间发生冲突。
发布于 2013-08-28 16:49:48
可能是您的console.log不在var top声明的内部范围之内。
当引用top时,您将不是引用声明的变量,而是引用window.top
console.log(top); // global variable `window.top`: window object
;(function(){
var top = 0;
console.log(top); // local variable `top`: 0
})();
console.log(top); // global variable `window.top`: window objecthttps://stackoverflow.com/questions/18493718
复制相似问题