【发布时间】:2016-04-18 05:03:40
【问题描述】:
我为广告制作了加载更多功能
在 Chrome 和 FireFox 中没有问题,当我尝试在 IE(版本 10)中选择时,显示以下 JavaScript 错误: “无法获取未定义或空引用的属性‘偏移’” 我想我已经在 Object 以外的类型的对象上调用了方法或属性,或者在需要 Object 时传递了 Object 以外的类型的参数。 所以我尝试了以下没有帮助的代码:
function findElementTotalOffset(obj) {
var oleft = otop = 0;
if (obj.offsetParent) {
do {
oleft += obj.offsetLeft;
otop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return {left : oleft, top : otop};
}
任何帮助将不胜感激:-)
import $ from "jquery"
class LazyLoadAds {
constructor() {
this.initLazyLoad = this.initLazyLoad.bind(this)
this.initLazyLoad()
}
initLazyLoad() {
let self = this,
listener = self.throttle(300, function () {
slotsAtlantic.forEach(function (item) {
let $item = $('#' + item.id)
if ($item.length) {
let $parent = $item.parent(),
index = slotsAtlantic.indexOf(item)
if ($parent.is(':visible') && ((window.scrollY || window.pageYOffset) >= ($parent.offset().top - $(window).height() - 300))) {
googletag.cmd.push(function () {
googletag.pubads().refresh([item.slot]);
});
slotsAtlantic.splice(index, 1);
}
}
});
});
window.addEventListener('scroll', listener)
}
throttle(delay, callback) {
var previousCall = new Date().getTime();
return function () {
var time = new Date().getTime();
if ((time - previousCall) >= delay) {
previousCall = time;
callback.apply(null, arguments);
}
};
}
}
export default LazyLoadAds
【问题讨论】:
标签: javascript