2017-10-20 3 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の上で動作doesntの。それはここで

は、ドロップダウンが

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

以下が働くよりリンクされている作成方法上のコードでMozzilaとさえマイクロソフトエッジ(新しいInternet Explorerなど)で動作します。

最小化されたプラグインを壊して、それからすべてを取るコードについては難しいが、ここでは機能が壊れている。私はそれを少し読みやすくしようとしました、そして、私は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イベントをサブスクライブし、親が見つからない場合に対応する必要があります。

関連する問題