我正在尝试在JavaScript中进行定位。我正在使用基于classic quirksmode function的累积位置函数,该函数将每个offsetTopoffsetLeftoffsetParent相加,直到顶部节点。

但是,我遇到了一个问题,即我感兴趣的元素在Firefox中没有offsetParent。在IE中,存在offsetParent,但是offsetTopoffsetLeft的总和为0,因此它实际上具有与Firefox中相同的问题。

什么会导致在屏幕上清晰可见且可用的元素没有offsetParent?或者,实际上,如何找到该元素的位置以便在其下方放置一个下拉菜单?

编辑:这是重现此特定实例的方法(当前接受的答案未解决):

  • 打开home page of Stack Overflow
  • 在网络浏览器的控制台(例如Chromev21)中运行以下代码:

    var e = document.querySelector('div');
    console.log(e);
    // <div id="notify-container"></div>
    do{
      var s = getComputedStyle(e);
      console.log(e.tagName,s.display,s.visibility,s.position,e.offsetParent);
    } while(e=e.parentElement)
    // DIV block visible fixed null
    // BODY block visible static null
    // HTML block visible static null
    

  • 为什么该元素的offsetParentnull

    最佳答案

    如果文档尚未完成加载,则offsetParent可以为null

    10-04 22:34