【问题标题】:How do I prevent, stop, or kill Javascript function?如何阻止、停止或终止 Javascript 函数?
【发布时间】:2012-03-29 21:34:43
【问题描述】:

如何阻止这个 Javascript 函数执行。

我有一个导致严重问题的 js 函数,我无法删除或修改它的源代码。我想知道是否可以简单地阻止、停止或终止该函数,以便在我解决问题之前不执行它。

所以在页面的某处:

<script type="text/javascript"><!--
problem_func();
//--></script>

我想要的只是停止该函数的执行,在标头或外部 js 中放置一个停止器。

有什么建议吗?

这是一个活生生的例子,如何停止呢? http://jsbin.com/uxalag/3

【问题讨论】:

  • @Mörre 我仍然看到执行的错误代码。你有没有修改smth?
  • 您需要将“覆盖函数”放置在声明“坏”函数和调用它的位置之间。如果这是不可能的,因为两个位置都在同一个 JS 文件中,那么对于您的问题没有解决方案(值得考虑)。哦,顺便说一句 - 从脚本标签中省略那些 HTML cmets。我们很久以前就需要这个的浏览器(那是用于 Netscape 4 和 IE 5 左右)。
  • @Mörre 伙计,我有一个想法,但我不确定这是否会有所帮助。如果我在标头内创建函数以查找
  • 不,它不会工作 - 那时浏览器不知道任何尚未解析的标签。我只是尝试确定,在第一个脚本标签 document.getElementsByTagName("script") 中只返回第一个脚本标签,在第二个脚本标签中它返回第一个和当前(第二个)等等。所以你不能在加载过程中操作低于您所在位置的任何标签。但是一个有趣的想法:-)(不推荐,但很有趣)

标签: javascript dom javascript-events


【解决方案1】:

如果您知道函数名称,则可以将其替换为不执行任何操作的函数。 在源js文件的script标签之后使用这个:

window.FunctionName=function(){return false;};

【讨论】:

  • 如果函数在全局命名空间中(并且没有隐藏在匿名函数中),他可以从任何地方覆盖它,无需编辑源代码。这会在 memory 中替换它。
  • 正如莫雷所说,这与源代码无关,它修改了内存中的功能
  • 这个想法是为了防止它,如果我要把它放在坏函数之后,它仍然会被执行吗?说得通?马上想出例子。
  • 当然它会被执行,但是你的函数版本会返回 false 而不是原始函数。这和根本不调用它不一样吗?
  • JavaScript 自上而下执行。因此,如果在他无法修改的脚本源中执行problem_func,您的重新定义将不起作用!您的重新定义将在损坏完成后进行......
【解决方案2】:

直接覆盖

例如,如果 function abc() { ..... } 引起您的问题,您可以用空正文覆盖它。

function abc() {  }

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 2012-03-12
    • 1970-01-01
    • 2013-03-08
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多