如何阻止、停止或终止 Javascript 函数?

Posted

技术标签:

【中文标题】如何阻止、停止或终止 Javascript 函数?【英文标题】:How do I prevent, stop, or kill Javascript function? 【发布时间】: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") 中只返回第一个脚本标签,在第二个脚本标签中它返回第一个和当前(第二个)等等。所以你不能在加载过程中操作低于您所在位置的任何标签。但是一个有趣的想法:-)(不推荐,但很有趣) 【参考方案1】:

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

window.FunctionName=function()return false;;

【讨论】:

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

直接覆盖

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

function abc()   

【讨论】:

以上是关于如何阻止、停止或终止 Javascript 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何立即终止/停止长 SQL 查询?

C语言如何终止线程?

如何正确停止线程

java中ExecutorService的线程池如何暂停所有的任务和继续所有的任务? 有这样的函数吗?

如何阻止 JavaScript 函数影响子元素?

如何终止或停止 C++ 中的分离线程?