ホームページ >ウェブフロントエンド >jsチュートリアル >AJAX を使用して HTML フラグメントで JavaScript スクリプトを返す_JavaScript ヒント

AJAX を使用して HTML フラグメントで JavaScript スクリプトを返す_JavaScript ヒント

WBOY
WBOYオリジナル
2016-05-16 18:37:121235ブラウズ

これは、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 = /]*>([^x00] )$/i;
//HTML フラグメント全体を var htmlBlock = html.split("");
for (var i in htmlBlock)
{
var ブロック; // 正規表現に一致するコンテンツ配列[1] は、以前の reg 定義をキャプチャするために括弧を使用したため、実際のスクリプト コンテンツです。
if (blocks = htmlBlock[i].match(reg))
{
//可能なコメント タグをクリアします。コメントの最後では無視されます --> と、eval は引き続き正常に機能します
var code = block[1].replace(/
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。