これは、AJAX 開発で非常に一般的な問題です。開発に JavaScript フレームワークを使用したことがない場合は、この問題をずっと前に発見していると思います。この記事では 2 つのソリューションを分析し、そのうちの 1 つは jQuery フレームワークの実装について説明します。
1. 問題の説明
以下は、問題を示す簡単な例です。次の例では、変数 responseText が AJAX によってロードされた HTML フラグメント データであると仮定します。このデータには、メッセージをポップアップするスクリプトが含まれています。このデータを、ID ajaxData を持つ DIV に挿入します。メッセージ ボックスが表示されますが、表示されないことが問題です。
2. 2解決方法
1. JavaScript の eval メソッドを使用してスクリプトを実行します。
このメソッドの具体的な実装のアイデアは、AJAX によって読み込まれた HTML に含まれるスクリプト ブロックの数に関係なく、xmlHttp.responseText 内のすべてのスクリプトを抽出することであり、見つかったスクリプトを実行するために eval メソッドを呼び出すことができます。ブロック。カプセル化された関数は以下に提供されます:
functionexecuteScript (html )
{
var reg = /var htmlBlock = html.split("");
for (var i in htmlBlock)
{
var ブロック; // 正規表現に一致するコンテンツ配列[1] は、以前の reg 定義をキャプチャするために括弧を使用したため、実際のスクリプト コンテンツです。
if (blocks = htmlBlock[i].match(reg))
{
//可能なコメント タグをクリアします。コメントの最後では無視されます --> と、eval は引き続き正常に機能します
var code = block[1].replace(/