ホームページ ウェブフロントエンド jsチュートリアル JavaScript 非同期 innerHTML 使用分析_JavaScript スキル

JavaScript 非同期 innerHTML 使用分析_JavaScript スキル

May 16, 2016 pm 06:38 PM
javascript 非同期

もちろん、このタイムシェアリング ロード技術は単なる補助的な技術であり、ノードを追加する機能はありません。最近では、さらに特異な技術 非同期 innerHTML が再び開発されており、この分野の研究では外国人が非常に進んでいることを賞賛せずにはいられません。

コードをコピー コードは次のとおりです。

function asyncInnerHTML(HTML, callback) {
var temp = document.createElement('div'),
frag = document.createDocumentFragment();
temp.innerHTML = HTML;//追加するコンテンツが最初にここに配置されます。
(function(){
if(temp.firstChild) {
frag.appendChild(temp.firstChild);//その後、少しずつドキュメントフラグメントに移動します
setTimeout(arguments.callee, 0) ;//非同期呼び出しを使用して、div ノードが空になるまで自分でドキュメントの断片をつなぎ合わせます
} else {
callback(frag);//ここでノードを挿入する実際の操作が実行されます
}
})();
}

このテクノロジーの利点:
1. クロージャーを使用して IE6 のメモリ オーバーフローの問題を解決します
2. (fn,0) このハックは、ブラウザーがアニメーションを一時停止しないように操作をキューからドラッグします
3. ドキュメント フラグメントを使用して、ページのレンダリングの数を減らします
4. コールバック ノードは、次の方法で挿入できます。 DOM 標準メソッド (appendChild) (IE の table 、 tbody の innerHTML、tr、td などのタグは読み取り専用です)
使用法:
コードをコピー コードは次のとおりです:

var htmlStr = '<div><p>...</p><p>.. .</p><div><div>..</div>';
asyncInnerHTML(htmlStr, function(fragment){
// 'fragment' を通常のものとして扱うことができます
document.body.appendChild(fragment);
});

ただし、このメソッドはテーブルにノードを追加するときに機能するわけではありません。大失敗だと言われます。 IE8、IE6、FF3.5 ではレンダリング エラーが発生することがテストされていますが、chrome、safari4、opera10 などではテーブルを完全にレンダリングできます。 IE8 などがノードを文書フラグメントに転送すると、ノード損失が発生すると推定されています。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

在FF3.5的firebug显示下,table新添加的节点,标签都丢失了。
flagment
在IE8的开发人员工具中,我们发现table新添加节点出错严重,见于IE一惯的表现,这是很正常的事!
flagment
相关演示可见无忧的贴子,发现这种方法不是最佳的插入动态内容的方法。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築

PHP 非同期コルーチン開発: データ キャッシュと読み取りおよび書き込み操作を高速化します。 PHP 非同期コルーチン開発: データ キャッシュと読み取りおよび書き込み操作を高速化します。 Dec 18, 2023 pm 01:09 PM

PHP 非同期コルーチン開発: データ キャッシュと読み取りおよび書き込み操作を高速化します。

Python asyncio の上級ガイド: 初心者から専門家まで Python asyncio の上級ガイド: 初心者から専門家まで Mar 04, 2024 am 09:43 AM

Python asyncio の上級ガイド: 初心者から専門家まで

See all articles