我已经实现了此脚本的一部分来帮助我进行调试

var ZFDebugLoad = window.onload;
window.onload = function(){
   if (ZFDebugLoad) {
      ZFDebugLoad();
   }
   ZFDebugCollapsed();
};

Firebug 给我的错误“错误太多递归中断”

对我来说,代码看起来像是一个无休止的循环,所以我想知道为什么原始作者将其放入。函数中也没有返回值,因此ZFDebugLoad永远不会有值。

编辑导致此错误的实际原因(对于遵循本教程的其他所有人,导致该错误的原因是此行
$response->setBody(preg_replace('/(<head.*>)/i', '$1' . $this->_headerOutput(), $response->getBody()));

它使用正则表达式模式/(<head.*>)/i,这导致脚本被追加到我的HTML5 <header>标记中,为了更正此错误,我在模式/<head(?!er).*?>/i中插入了一个空格

最佳答案

ZFDebugLoad保存window.onload的旧值,然后将其替换为另一个函数。

load窗口上,它首先运行原始函数(如果有的话),然后运行ZFDebugCollapsed
您不需要返回值。在JavaScript中,功能就是值(value)。 if (ZFDebugLoad)检查ZFDebugLoad是否为undefined,即在运行脚本之前是否已经具有window.onload函数。如果不是udefined,则可以执行。

10-07 21:18