0
フレームワークを使用していないため、単一のHTMLファイルにレイアウトのスケルトンが保持され、他のHTMLスニペットがレイアウト。コードはすべてメインの拡張フォルダ/ popup /内の同じディレクトリにありますローカルHTMLをDivにロードする(Chrome拡張機能)
ローカルに保存されたhtmlスニペットをdiv要素に読み込むための非常に単純な関数を作成します。ここに私の最初の試みである:
function loadView(viewName,destination){
var URL = "/popup/"+viewName;
var client = new XMLHttpRequest();
client.open('GET', URL, false);
client.onreadystatechange = function() {
document.getElementById(destination).innerHTML = client.responseText;
}
client.send();
}
// Example of a call
loadView('contact.html','widgetBox');
それが偽asynchにAJAXの設定に依存しているので、明らかにこれはひどいです。しかし、この解決策の下では、スクリプト内の次のコード行が新しくロードされたコンテンツを操作しようとする可能性があるため、これが必要です。
ajaxに依存しない同様の結果に達する方法は何でしょうか? (あるいは、少なくとも、非同期誤使用の必要性を解決することになる)
注:
- 私は基本的に、この正確な問題のためのフレームワークがあることを知っています。私はフレームワークなしでやることを学ぶのが好きです。私はフレームワークの使用には挑戦していない、私はこの問題のアプローチに興味がない。関連して、私はjqueryの使用を避けたいと思います(そして、これはクロム拡張ですので、きれいなJSで開発するのは特に苦しいことではありません)。
- contact.htmlのコンテンツはhtmlです.HTMLの文字列です(つまり、ロードするコンテンツ以外にヘッダーやコンテンツはありません)。私は個別の.htmlファイル以外にも別の大会に出席していますが、私は様々なページチャンクを整理しておくのが簡単で、HTML形式のもので簡単に読むことができます。
あなたは私にそれを打つ!コールバックを使用するのが適切なソリューションです。 – kamoroso94
ありがとうございます。私はこれがどのように機能するかを見ています。しかし、どうやって大量のネストされたスタックが次のコードになるのを避けるのですか? – COMisHARD
これは、コードを小さな関数に分解することで軽減できます。これは、とにかくプログラミングの面で優れています。 –