getBoundingClientRect()不用于safari

时间:2018-05-14 13:50:10

标签: javascript

我已经将getBoundingClientRect()用于菜单,而不是在使用safari。它在iphone的移动浏览器,chrome和firefox上运行良好,但在Safari浏览器上它无法正常工作。

<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>

JS:

var bookingScroll = document.getElementById("bookingScroll");
document.getElementById('booking').addEventListener('click', function(){
  window.scrollTo({
    top: bookingScroll.getBoundingClientRect().top,
    behavior: "smooth"
  });
})

编辑:我在jquery中提出了一个适用于safari的解决方案。

1 个答案:

答案 0 :(得分:0)

也许有更好的答案。这是我案例的解决方案:

https://github.com/flesler/jquery.scrollTo

if(navigator.userAgent.indexOf("Safari") != -1)
  {
    $('#booking').on('click', function(event) {
        $(window).scrollTo($("#bookingScroll"));
    });
  }