スクリプトを非同期に読み込むと、スクリプトが読み込まれている間もページがレンダリングされ続けるため、後で実行される他の非同期スクリプトがまだクエリ中に残っている非同期スクリプトより早く読み込まれる可能性があります... ここでは非同期のものはありませんが、asyncキーワードが存在しなくても同じように見えますが、スクリプトは順番に応じて次々とクエリに入ります3つまたは4つのスクリプトをパラレルにする!
- >だから、彼らは、後にロードするために始めましたallthough短いスクリプトが長いものの前にロードするために終了することができるということが起こる...
私の研究では、私はその問題について明確な解決策を見つけることができませんでした、なぜならそのロードプロセスを詳細に制御するのは非常に難しいようです。 (あなたは、ボード上のその現象に関するいくつかの話題をここで見つけることができます...)
私はそのスライダーを持っていないので、あなた自身でテストする必要があります。 :
解決方法1:
てみは「延期」キーワードを使用するには、これは私が悲しげに、「非同期」の逆を言うと、ページがcompletly解析される前に、スクリプトがロードされていないことを引き起こすためにそうされるべきであるがそれが動作するかどうかわからない、前にそれを使用していないと、この場合に動作していない "document.ready"を使用するのと同じように聞こえる... 重要なことは、スクリプトを外部キーワードは、何もしませんすなわち:
<script src="demo_defer.js" defer></script>
解決方法2:
A確実にスライダースクリプトの呼び出しにコールバックとして私たちのスクリプトを追加することであろう解決策を働いたが、私はこのことを推測します更新安全ではないプラグインコードを変更する必要があるため、ここでは適切な解決法はありません!
解決策3:
はたぶん、あなたは実行後に開始されることを確認するタイムアウトと遊ぶことができますが、問題は、あなたが本当にこのタイムアウトがなければなりませんどのくらい知ることができないということです! (つまり、ここを見て:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout)
回避策:私はその問題を回避する方法を思いついた、しかしとしてのコードがテストされていない前に、多分それを試してみて、あなたが持っているとき、私に通知した
このスクリプトが含まれているので、どのように動作するか見てみることができます...
このように、!important-statementを使って位置付けを行うクラスが追加され、最初のクリックで削除される要素は重要ではなく、後でそれをクリックするたびに位置決めが再び操作されることはありません! YOUR LAST COMMENTに関する
function sr_custom_width_for_slides()
{ ?>
<style type="text/css">
.notClicked .wmg-image.wmg-image-3.first.ui-resizable {
width: 91.6379% !important;
}
.notClicked .wmg-image.wmg-image-2 {
width: 95% !important;
}
.notClicked .wmg-image.wmg-image-3 {
width: 98.3621% !important;
}
</style>
<script type="text/javascript">
jQuery(document).ready(function() {
var firstClicked = false;
jQuery(".wmg-before-after").addClass("notClicked");
jQuery(".wmg-before-after").click(function() {
if (!firstClicked) {
jQuery(".wmg-image.wmg-image-3.first.ui-resizable").css("width","91.6379%");
jQuery(".wmg-image.wmg-image-2.ui-resizable").css("width","95%");
jQuery(".wmg-image.wmg-image-1.ui-resizable").css("width","98.3621%");
jQuery(".wmg-before-after").removeClass("notClicked");
firstClicked = true;
}
});
});
</script>
<?php }
add_action('wp_footer', 'sr_custom_width_for_slides', 1000);
EDIT:
クリックイベントが発生されることはありませんので、私は再びサイトをチェックして、私の場合、それは悲しいことに、まったく動作しません!私は、プラグインのJSコードが、おそらく私たちのスクリプトが動作しなくなるようなイベントをバインドしていると思います...(もっと詳しくは関数stopPropagation()を参照してください)。その方法でPlugINによって操作される!私の知る限り、これは "MouseEnterイベント" または "マウスオーバー" 可能性が見ることができるように...
だから
jQuery(".wmg-before-after").mouseover(function() {
...
});
こんにちは@ ToTaTaRi。まず、皆さんのご関心とご努力を感謝します。私はこのコードを試していますが、前のスクリプトと同様に、スクリプトはそこにありますが動作しません。 解決方法1(外部スクリプトを使用)も試しましたが、どちらも機能しません。 このことは私を怒らせている。できるだけ早く解決策3を試してみましょう。 – Marco
私は本当に申し訳ありません、最後のコードは動作しているようですが、愚かなSYNTAX ERRORがあります、plsはクラス名の前にドットを削除します - > ".notClicked"は "notClicked"でなければなりません!上記のコードを変更しました... :) – ToTaTaRi
ありがとう@ToTaTaRi!これがやっと働いた!ちょっとした問題があります。画像がロードされるとすぐに、スライダは機能しません。私は1つのセパレータ(2番目または最後)をクリックして、それが適切に動作するように少し待たなければなりません。これを避ける方法はありますか? – Marco