如何使用模块模式检索文档数据
How do I retrieve document data, using the module pattern?
我正在编写我认为是模块模式的javascript(我对编程仍然很陌生,所以如果我使用了不正确的术语,请原谅我)。
下面的脚本用于在文档加载时测量三件事:
- 页面滚动距离。
-
#eventSideBar
相对于文档顶部的y轴偏移量 - 文件的整体高度
(function (exocet, $, undefined) {
var scrollDistance = function() {
return $('body').scrollTop()
}
var sideBarOffset = function() {
return $('#eventSideBar').offset().top;
}
var allHeight = function() {
return $('body').height();
}
exocet.init = function() {
console.log('Scroll distance: ' + scrollDistance() +
' Sidebar offset: ' + sideBarOffset() +
' Total height: ' + allHeight()
);
};
}(window.exocet = window.exocet || {}, jQuery));
$(document).ready(function() {
exocet.init();
});
当将这些记录到控制台时,始终正确返回的唯一值(在Chrome中测试)是sideBarOffset
。而scrollDistance
总是返回0,allHeight
变化+/-约1000px。
如果我将exocet.init
更改为:
exocet.init = function() {
console.log('Scroll distance: ' + scrollDistance() +
' Sidebar offset: ' + sideBarOffset() +
' Total height: ' + allHeight()
);
$(document).scroll(function(){
console.log('Scroll is now: ' + scrollDistance());
});
};
我总是得到正确的滚动位置值。这样可以得到正确的结果,但是看起来有点俗气。
是否有一种"适当"的方式来获得我在没有链接document
方法之后的数据,就像我的方法中发生的那样?
听起来你需要的是:
$(document).scroll(function() { exocet.init(); });
把它放到ready回调中。用户滚动时必须记录结果。按刷新没有多大意义
@beautifulcoder的示例将在每次文档滚动时工作。如果您只想要页面加载时的滚动位置(即,如果先前在页面上保存了滚动位置),那么您可以将exocet.init()
函数放在load
事件处理程序中,并使用短超时来捕获初始滚动位置:
$(window).on('load', function() {
setTimeout(function() {
exocet.init();
}, 200);
});
如果两者都需要,那么也可以使用scroll
事件处理程序。
相关文章:
- 在HTML文档中使用XML文件中的数据
- 使用 JQuery 修改函数写入文档的数据
- 在与 IE8 兼容的文档片段中查找数据
- 当文档准备就绪时,将数据从一个文本框复制到另一个
- 如何在 JavaScript 中使用 HTML5 文档的下划线小写对象值/数据
- 如何使用数据 URI 将 MSWord 文档 (.docx) 传送到 Chrome
- 如何在数据驱动文档中创建动态 json 并在 jsp 中获取 json 响应
- 你知道谷歌文档Javascript是如何进行间隔数据自动刷新的吗?
- 文档范围 onclick 事件发送表单数据
- 加载从跨文档消息传递中作为事件数据获得的 pdf
- 将数组从文档属性与数据范围进行比较不起作用
- 将数据预置到垂直滚动的文档时,如何保持前一部分可见
- 将包含内容和元数据的文件上传到谷歌文档会返回400无效/错误请求
- 如何在点击复选框时检索现有的jquery数据表(在文档上初始化)
- 在Phonegap中加载[对象文档]的AJAX成功数据
- Javascript文档.write(元数据)对SEO有效
- 如何让D3数据驱动文档在正确的时区显示moment.js日期时间
- 如何使用模块模式检索文档数据
- 流式传输文档数据后链接未打开
- 从Cloudant获取所有文档数据,而不是id, key, value