Ajax 応答を介して返された関数の実行 お問い合わせは、Ajax 応答内で返された JavaScript 関数を呼び出す機能を中心に展開されています。明確にするために、Ajax コールバックの直後に関数を呼び出そうとしているのではなく、ページの存続期間中に後で関数にアクセスしたいと考えています。 答えは肯定です。特定の条件が満たされていれば、ページの存在中いつでも、新しく取得したコードを実行できます。 条件: 構文の正確さ: 返される JavaScript コードは、構文的に有効である必要があります。 実行要件: DIV の に挿入されているにもかかわらず。ブロックを使用すると、ブラウザーは関数の存在を認識するために宣言コードを実行する必要があります。これは eval() メソッドを介して実現できます。</li> </ul> <p><strong>例:</strong></p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre><code class="html"><div id="div1"> <script id="sc1" type="text/javascript"> function go() { alert("GO!") } // hypothetical Ajax callback var newsc = '<script id="sc1" type="text/javascript">' + 'function go() { alert("GO!") }' + ''; var e = document.getElementById('div1'); e.innerHTML = newsc; eval(document.getElementById('sc1').innerHTML); ログイン後にコピー この例では Ajax の使用を避けていますが、概念を示しています。 eval() メソッドは新しい関数を効果的に宣言し、ページの存続期間中ずっとその関数を呼び出せるようにします。 注: Ajax 呼び出しの場合は、関数を別のファイルで外部化しないことをお勧めします。このアプローチは潜在的な問題を引き起こす可能性があるため、このアプローチが繰り返される可能性があります。ブラウザ間の互換性も考慮事項になる可能性があり、その場合、krosenvold が提案するプロトタイプのアプローチが実行可能なオプションとなります。