Javascript “;太多的递归”;在加载事件中
我正在尝试将表单从一个域的一个页面包含到另一个域的另一个页面。这是我的代码,我把它放在我的块表单后面Javascript “;太多的递归”;在加载事件中,javascript,Javascript,我正在尝试将表单从一个域的一个页面包含到另一个域的另一个页面。这是我的代码,我把它放在我的块表单后面 function IncludeSrc(src) { var s= document.createElement("script"); s.src = src; s.async = true; document.getElementsByTagName("head")[0].appendChild(s); } var onLoadFunc = window.onload;
function IncludeSrc(src) {
var s= document.createElement("script");
s.src = src;
s.async = true;
document.getElementsByTagName("head")[0].appendChild(s);
}
var onLoadFunc = window.onload;
window.onload=function(){
if (typeof(onLoadFunc)=='function') onLoadFunc();
IncludeSrc('MYADRESS');
};
任何浏览器中都没有错误,但表单未加载。在Firefox控制台中,我发现错误
递归太多
。脚本的地址是有效的,我检查过了。我做错了什么?那是因为你在调用自身的onLoadFunc
。不管您为什么要这样做,递归没有基本情况,因此它永远不会见底…我不理解您的脚本的意义。您正在递归调用window.onload
。@nico:不太可能,onLoadFunc
是指先前在window.onload
中定义的函数。当然,如果您运行该代码两次,就会出现递归。请参见:var onload func=window.onload;是错误执行一些基本调试,添加console.log
调用以查看执行了什么。另外,请确保不要调用该代码两次,否则确实存在无限递归。好吧……我在Firefox中没有发现任何错误。他正在调用任何窗口。onload在替换该值之前引用的。如果它确实是同一个函数,他会有无限递归,但是如果代码只被调用一次,就可以了。为了证明我的观点:。无论如何,递归仍然没有定义好的基本情况。@Felix Kling:你能确定window.onload
将在var onLoadFunc=window.onload之前被调用吗
?@nico:不,你不能,事实上它不太可能会(取决于上面的代码段何时执行)。为什么这样问?递归有一个基本情况:if(typeof(onLoadFunc)==“function”)
。