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 中的 fun() 仍然保留在页面中。

确保ajax页面调用它自己的js函数的实用方法是什么?

因为 a.php 会加载很多其他不同开发者开发的页面,他们可能会在页面内部编写自己的 js 函数,有时它们的函数会有共同的命名,如:remove()、add()...等。

我想知道,是否有任何有效的方法来避免这种情况?

谢谢。

4

1 回答 1

1

答案很简单,不。

由于在将脚本标记附加到 DOM 时浏览器会执行什么操作,因此无法保护函数不被脚本所做的某些分配覆盖。

除了正确解决每个模块中的问题之外,您真的没有其他现实的解决方案:

  1. 在每个模块中正确命名您的公共函数
  2. 使用自执行功能模式在每个模块中限定您的私有功能
于 2012-12-20T06:13:27.790 回答