Javascript getBoundingClientRect()不适用于safari
我已将getBoundingClientRect()用于菜单,但不在safari上工作。它在iphone的移动浏览器、chrome和firefox上运行良好,但在safari网络浏览器上却无法运行Javascript getBoundingClientRect()不适用于safari,javascript,Javascript,我已将getBoundingClientRect()用于菜单,但不在safari上工作。它在iphone的移动浏览器、chrome和firefox上运行良好,但在safari网络浏览器上却无法运行 <div class="menuDiv" id="menuDivId"> <div class="menu" id="menuId"> <ul> <li> <div class="
<div class="menuDiv" id="menuDivId">
<div class="menu" id="menuId">
<ul>
<li>
<div class="borderBo">
<a class="active" id="booking" href="#book">Booking</a
</div>
</li>
</ul>
</div>
</div>
<div>
.
.
.
lots of text
.
.
.
.
</div>
<div class="bookings" id="bookingScroll">
</div>
<div>
.
.
.
lots of text
.
.
.
.
</div>
编辑:我在jquery中提出了一个适用于safari的解决方案。也许有更好的答案。这是我的案例的解决方案:
它不工作
不是问题的完整描述。您是否在浏览器的控制台中收到错误消息?bookingScroll.getBoundingClientRect().top的值是多少?您希望得到什么值?控制台中没有错误。单击事件激发,之后不会发生任何事情。顺便说一句,我在菜单上还有几个项目,在这个标签前面有很多文本内容。我将编辑以整理混乱。bookingScroll.getBoundingClientRect().top的值是多少?您期望的值是多少?不同的屏幕大小会有所不同:1407.8751385.51744.296875。。。等等firefox全屏显示:1520.800048828125。safari给出1519.875。
var bookingScroll = document.getElementById("bookingScroll");
document.getElementById('booking').addEventListener('click', function(){
window.scrollTo({
top: bookingScroll.getBoundingClientRect().top,
behavior: "smooth"
});
})
if(navigator.userAgent.indexOf("Safari") != -1)
{
$('#booking').on('click', function(event) {
$(window).scrollTo($("#bookingScroll"));
});
}