2017-10-20 138 views
0

我想用下拉菜单制作一个基础网站。is-dropdown-submenu-parent使链接在Opera和Chrome上不可点击

不过,我注意到,当我点击一些链接有控制台

Uncaught TypeError: t.getBoundingClientRect is not a function

at i (catalog-list-pack-d7c9d20e63.js:4) 
at Object.e [as ImNotTouchingYou] (catalog-list-pack-d7c9d20e63.js:4) 
at e.value (catalog-list-pack-d7c9d20e63.js:5) 
at HTMLLIElement.s (catalog-list-pack-d7c9d20e63.js:5) 
at HTMLLIElement.dispatch (catalog-list-pack-d7c9d20e63.js:2) 
at HTMLLIElement.y.handle (catalog-list-pack-d7c9d20e63.js:2) 

此代码,打破从基础插件上的错误。

我的调试让我得出结论,如果我删除类is-dropdown-submenu-parent一切工作正常。

这个课程来自于基础课,恐怕我会在其他地方插入错误,因为我不明白发生了什么。

另一件事 - 它不适用于Chrome和Opera。它适用于Mozzila甚至微软边缘(在新的Internet Explorer)

这里是下拉是如何创建的

<div class="MegaMenu__row"> 
    <div class="MegaMenu__listColumn"> 
     <dt class="is-dropdown-submenu-parent MegaMenu__item MegaMenu__item-- 
      header MegaMenu__item--no-bullet"> 
      <a href="/somewhere</a> 
     </dt> 

和下面是更多的联系,其工作的代码。

关于打破其最小化插件,并从中取得一切的代码是棘手的,但这里是打破的功能。我试图让它更具可读性,我不知道Dave是谁。

function f(t,e) { 
     if(t=t.length?t[0]:t,t===window||t===document) 
     throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); 
     var f=t.getBoundingClientRect(), 
     o=t.parentNode.getBoundingClientRect(), 
     i=document.body.getBoundingClientRect(), 
     s=window.pageYOffset, 
     h=window.pageXOffset; 
    return{ 
      width:f.width, 
      height:f.height, 
      offset:{top:f.top+s,left:f.left+h}, 
      parentDims:{ 
          width: o.width, 
          height: o.height, 
          offset{ 
            top:o.top+s, 
            left:o.left+h 
           } 
         }, 
      windowDims:{ 
         width:i.width, 
         height:i.height, 
         offset:{ 
            top:s, 
            left:h 
           } 
         } 
      } 
    } 

有人可以向我解释为什么这个js函数在Opera和Chrome上破坏了吗?

+0

你有没有想过这个? – JuanR

+0

不......我只是想“不会修复那个”。现在不是我的问题 –

回答

0

如果它有助于任何人,我们在与OP相同的浏览器上得到相同的错误,但在我们的情况下,当用户调整视口时发生了这种情况。

原因竟然是一个下拉菜单,没有相应的父母来触发它。

例如:

<li data-toggle="someDropDown"> 
    <a href="#">OPEN DROPDOWN</a> 
</li> 

<div id="someDropDown" data-dropdown data-resize="someDropDown" data-events="resize"> 
    <div>The dropdown</div> 
</div> 

这工作正常原样。如果我从代码中删除第一个li,则在调整窗口大小时,Foundation会引发错误。

换句话说,这是Foundation 6中的一个错误。它应该处理下拉菜单订阅resize事件并且父文件缺失的情况。