2017-11-25 10 views
0

DOMContentLoadedは動作することがあります。DOMContentLoadedが動作することがありますが、時にはsetTimeoutは通常動作しません。

たとえば、次のコードは動作します:

setTimeout(()=>{ 
    let sites = ['mako.co.il']; 
    let regex = /\..+/; 
    let href = window.location.href; 
    for (let i = 0; i < sites.length; i++) { 
     if (href.includes(sites[i])) { 
      let domain = sites[i].replace(regex, ''); 
      document.body.innerHTML =` 
       <div style="direction: ltr; position: fixed; top: 0; z-index: 999999; display: block; width: 100%; height: 100%; background: red"> 
        <p style="position: relative; top: 40%; display: block; font-size: 66px; font-weight: bold; color: #fff; margin: 0 auto; text-align: center"> 
        Enough with this ${domain} bullshit! 
        </p> 
       </div> 
      `; 
     } 
    } 
}, 1500); 

しかし、その代わりsetTimeout(()=>{...}, 1500);、私はそれはないでしょうdocument.addEventListener('DOMContentLoaded',()=>{...});使用している場合。

なぜですか?

いずれの場合も、一定の期間待ってからコードを実行します。すべてのDOMツリーがロードされた後、コードが失敗する場合はどうなりますか?

+1

『時にはdoesntの仕事がないと』:

は、だからあなたはおそらくwindowさんloadイベントの代わりに必要ですか?何が効果的かどうかについて、より具体的なシナリオを教えてください。たとえば、「DOMContentLoadedイベントは、最初のページの読み込み時にのみ動作し、ウェブサイト内の連続したナビゲーションでは機能しません」。これは問題の絞り込みに役立ちます。 – SidOfc

+1

[DOMContentLoadedイベント内のコードが正常に動作しません](https://stackoverflow.com/questions/39993676/code-inside-domcontentloaded-event-not-working)|また、このコメント:https://stackoverflow.com/questions/39993676/code-inside-domcontentloaded-event-not-working#comment67265322_39993676 – yuriy636

+0

悲しいことに、私は本当にこのケースでは@SidOfcできないと思います。なぜなら、私が正しく覚えていれば約2ヶ月前にそれは働いていましたが、今はそれがありませんでした。私はこれ以上の詳細を持っていればいいと思っています。間違って思い出し、 'DOMContentLoaded'はまったく動作しませんでした。 – Arcticooling

答えて

1

あなたの問題は、画像などの埋め込みリソースがブラウザのキャッシュから高速に読み込まれることがありますが、時々ウェブから読み込まれることがあることに関連している可能性があります。文書の後

documentDOMContentLoadedイベント火災は使用可能ですが、画像のよう前に埋め込まれたリソースがロードされます。 - あなたは手の込んだことができ

window.addEventListener('load', function() { 
    // This code runs after all resources including images are loaded. 
}, false); 
+0

あなたは 'window.addEventListener( 'DOMContentLoaded'、()=> {...});の代わりに' document'を起動しますか?残念ながら、それはうまくいきませんでした。または、私は正しいことを理解していないかもしれません。 – Arcticooling

+0

@Arcticooling 'window.addEventListener( 'load'、...)' –

+0

申し訳ありませんが、大丈夫です。「DOMContentLoaded」イベントと「load」イベントの違いについてお読みください。 – Arcticooling

関連する問題