3

joomla の ScriptMerge を使用してすべての js ファイルを 1 つにマージしましたが、window.addEvent はスクイーズ ボックスの初期化の関数ではありません。これ以外はすべて正常に動作しています...スクイーズ ボックスのコードが唯一の JavaScript であることに気付きましたヘッドタグにブロックが残っていると、他のすべてのスクリプトがマージされて本文に移動されます...スクイーズボックスを開くボタンをクリックすると、もちろん開きませんが、もう一度クリックすると正常に開きます...誰か持っていますかこのエラーを解決する方法を教えてください。おそらく、mootools コアがマージされた js ファイルで呼び出されていますが、head では呼び出されていないため、mootools コアがないため、スクイーズ ボックス コードがエラーを返している可能性があります。

4

1 に答える 1

4

問題があります:スクリプトでasync属性を使用しています - asyncは、スクリプトがロードされ、デフォルトの動作のように dom の実行を保持しないことを意味します ( asyncまたはdeferなし)。mootoolswindow.addEventがページにロードされていないときに呼び出そうとすると、 のエラーが発生するのはこのためです。undefined

問題の 2 つの解決策:

  1. async属性を削除して、ロードされるまでスクリプトを強制的に保持してから、dom の実行を続行します。
  2. スクリプト タグにイベントを追加しonload、残りのスクリプトをそこで実行します。

<script src="http://tereni.me/cache/plg_scriptmerge/975e10ecd911c8ca09713d1120c51a6d.js" async type="text/javascript" onload="onLoadScript();"></script>

その後、別のスクリプトタグ内で:

function onLoadScript(){
        window.addEvent('domready',function(){
            alert('dom is ready');
        });
    }
于 2013-04-23T18:39:29.523 に答える