1. ホーム
  2. javascript

jQuery $(document).ready ()が2回実行される

2023-09-02 03:36:07

質問

私はここで何が起こっているのかを知ろうと、ウェブを徘徊してきましたが、具体的な答えを得ることができませんでした。

私が持っているのは $(document).ready があり、その中のコードに関係なく何度も実行されているように見えます。

jQueryのバグレポートを読みました。 .ready イベントが2回発生することについて、jQueryのバグレポートを読みました。しかし、以下のようなコードを書いても2回実行されます。

$(document).ready(function() {
    try{    
        console.log('ready');
        }
    catch(e){
        console.log(e);
    }
});

コンソールでは、"ready" が2回記録されるだけです。例外が含まれる別の .ready が問題を引き起こす可能性はありますか?私の理解では、すべての .ready タグは互いに独立していましたが、これがどこで作用しているのかがわからないようです。

このサイトのヘッドブロックは以下のとおりです。

<head>
<title>${path.title}</title>
<meta name="Description" content="${path.description}" />
<link href="${cssHost}${path.pathCss}" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="media/js/fancybox/jquery.fancybox.pack.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/landing.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/functions.js" type="text/javascript"><!-- -->    </script>
<script src="/media/es/jobsite/js/jobParsing.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="/media/es/jobsite/js/queryNormilization.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.metadata.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.form.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery.i18n.properties-min.js" type="text/javascript" charset="utf-8"><!----></script>

<script type="text/javascript" charset="utf-8">

function updateBannerLink() {
    var s4 = location.hash.substring(1);
    $("#banner").attr('href','http://INTELATRACKING.ORG/?a=12240&amp;c=29258&amp;s4='+s4+'&amp;s5=^');
}

</script>
</head>

JSPの変数には注意を払う必要はありませんが、ご覧の通り、functions.jsファイルを一度だけ呼び出しています(.ready関数が存在する場所です)。

どのように解決するのですか?

ready イベントを 2 回発生させることはできません。おそらく、コードが含まれている要素を移動または操作して、ブラウザがスクリプト ブロックを再実行するようなコードがあるのでしょう。

これは、スクリプトタグを <head> の中、あるいは閉じる </body> タグと ではなく を使って $('body').wrapInner(); を使って $('body').html($('body').html().replace(...)); を使っても同じ効果があります。