9

ウェブページを操作するGoogleChrome拡張機能に取り組んでいますが、部分的に読み込まれた後(DOM)または完全に読み込まれた後(画像付き)です。

最近は多くのサイトで

<!DOCTYPE html>

宣言、またはそのいくつかのバリエーションですが、他の多くはそうではありません。質問は主にHTMLDoctypesに関するものです...他のDoctypesについてはよくわかりません。

WebページにDOCTYPE宣言がない場合、$(window).load();と想定しても安全ですか。解雇されませんか?

最初は$(document).ready();を使用していました。(DOMがロードされたとき)が、後で$(window).load();に切り替えられました。(画像もロードするため)。

今は$(window).load();です。DOCTYPEがない場合は機能しないようです。$(document).ready(); DOCTYPEが宣言されているかどうかに関係なく、すべてのページで機能するようです。

たぶん、これは同じ問題を抱えている他の人にとって役立つかもしれません。少し調べてみましたが、決定的な答えは見つかりませんでした。私は次のようなものを使用することになりそうです:

if (window.document.doctype != null) {$(window).load(checkEntries);}
if (window.document.doctype == null) {$(document).ready(checkEntries);}

私の質問は...これは、使用するイベントを知るためにDOCTYPEをチェックする必要があるのは正常ですか?それとも私はここで何かが欠けていますか?

基本的に、なぜ$(window).load(); DOCTYPE宣言がない場合、起動しないように見えますか?

4

2 に答える 2

6

基本的に、$(window).load()は完全にはサポートされていないため、使用しないでください。本当に必要な場合は、上記のソリューションが最善の方法です。jQueryページは、警告をうまくまとめています。

画像で使用する場合のロードイベントの警告

開発者が.load()ショートカットを使用して解決しようとする一般的な課題は、画像(または画像のコレクション)が完全に読み込まれたときに関数を実行することです。これには、注意すべきいくつかの既知の警告があります。これらは:

  • 一貫して動作せず、クロスブラウザでも確実に動作しません
  • 画像のsrcが以前と同じsrcに設定されている場合、WebKitでは正しく起動しません
  • DOMツリーを正しくバブルアップしません
  • ブラウザのキャッシュにすでに存在する画像の起動を停止できます

URL:http ://api.jquery.com/load-event/

于 2012-11-05T12:09:02.087 に答える
3

このメソッドは通常、属性.ready()と互換性がありません。<body onload="">ロードを使用する必要がある場合は、.ready()を使用しないか、jQueryの.load()メソッドを使用してロードイベントハンドラーをウィンドウまたは画像などのより具体的なアイテムにアタッチします。

于 2012-11-05T12:08:45.863 に答える