2

例えば:

--- a.php ---
<script>
function fun() {
   console.log('this is fun() from a.php');
}
function loadb() {
   $("#loadb").load("b.php");
}
function removeb() {
   $("#loadb").remove();
}
</script>
This is a.php
<input type="button" onclick="fun()" value="echo fun">
<input type="button" onclick="loadb()" value="load b.php">
<input type="button" onclick="removeb()" value="remove b.php">
<div id="loadb"></div>

--- b.php ---
<script>
function fun() {
   console.log('this is fun() from b.php');
}
</script>
This is b.php

Ajax から b.php をロードした後、a.php の "fun()" は、b.php を削除して b.php を削除しても上書きされます。b.php の fun() は引き続きページに保持されます。

ajax 処理されたページが独自の js 関数を呼び出すことを保証する実際的な方法は何ですか?

Cos a.php は、異なる開発者によって開発された他の多くのページをロードします。ページ内に独自の js 関数を記述する場合があり、それらの関数には、remove()、add() などのような共通の名前が付いている場合があります。

これを回避する効率的な方法があるかどうか知りたいですか?

ありがとう。

4

1 に答える 1

1

答えは単純明快です。

script タグが DOM に追加されたときにブラウザーが行うことの結果として、関数がスクリプトによって行われた割り当てによって上書きされるのを防ぐ方法はありません。

各モジュールでそれを適切に行う以外に、現実的な解決策は他にありません。

  1. 各モジュールでパブリック関数に適切に名前を付ける
  2. Self Executing Functionパターンを使用して、各モジュールのプライベート関数のスコープを設定します
于 2012-12-20T06:13:27.790 に答える