我正在使用document.body.getBoundingClientRect()。右边找到我顶部导航中的所有元素都不在视图中,以便隐藏它们并将它们放在“更多”下拉列表中。但是这个功能似乎并没有在safari中运行。有什么替代功能,还是有一些方法可以在safari中修复它?
var windowRightOffset = document.body.getBoundingClientRect().right,
elementHiddenFlag = false;
$(".headerNav").find("li").each(function() {
if ($(this).className !== 'more') {
var elemRightOffset = $(this).find("a")[0].getBoundingClientRect().right;
if (elemRightOffset > windowRightOffset) {
$(this).hide();
elementHiddenFlag = true;
$(".more .moreNavItems-content").append($(this).html());
}
}
});
答案 0 :(得分:0)
由于您使用的是jQuery,因此您可以查看jQuery中的position和offset函数。
要使用jQuery替换代码,您将会这样做:
var aTag = $(this).find("a")[0];
var left = aTag.offset().left;
var width = aTag.find("a")[0].width();
var aTagRightOffset = width + left;
答案 1 :(得分:0)
好吧,放开:-)
function getBounding(name,index){
this.ele = document.querySelectorAll(name)[index];
this.y= this.ele.offsetTop;
this.x= this.ele.offsetLeft;
this.coordinates();
}
getBounding.prototype.coordinates = function(){
if( this.ele.localName != "body"){
this.ele = this.ele.offsetParent;
this.y += this.ele.offsetTop;
this.x += this.ele.offsetLeft;
this.coordinates();
} else {
return({x:this.x,y:this.y});
}
}
new getBounding(“ .- img”,0)