Javascript setInterval和setTimeout不工作-未从UI触发请求

Javascript setInterval和setTimeout不工作-未从UI触发请求,javascript,jquery,xslt,Javascript,Jquery,Xslt,单击从XSLT调用javascript函数(xToolbar)的链接后,我试图打开一个新窗口: <xsl:when test="$thisFunction = 'DBDELETE' and process/mode = 'url' and contains(process/url,'dps.xadhoc.delete')"> <a href="#null" class="{process/class}" onClick=" if (window.open

单击从XSLT调用javascript函数(xToolbar)的链接后,我试图打开一个新窗口:

<xsl:when test="$thisFunction = 'DBDELETE' and process/mode = 'url' and contains(process/url,'dps.xadhoc.delete')">
<a href="#null" class="{process/class}"
    onClick="
        if (window.opener)
             xToolbar('{process/url}{$args}{amp}NOREDIRECT','{$aTarget}','{$aName}','{$aOptions}','{process/confirm}','{process/height}','{process/width}');
        else
             xToolbar('{process/url}{$args}','{$aTarget}','{$aName}','{$aOptions}','{process/confirm}','{process/height}','{process/width}');
             if (window.opener) window.opener.location.href = window.opener.location.href;
             WaitToSendRequest();">
    <img src="{process/icon}" border="0" align="absmiddle" title="{@caption}"/>
</a>

此处写入函数WaitToSendRequest(),以在确认弹出窗口中按下OK后延迟窗口关闭

<script language="javascript">
<![CDATA[
    var interval_close ;
    function WaitToSendRequest(){ 
        interval_close = setInterval(CloseDeleteForm(),3000);
        }       
    function CloseDeleteForm(){
     self.close();
    // cntt = cntt + 1;
    // if(cntt == 3)
     clearInterval(interval_close);
    }
]]>

xToolbar函数如下所示:

function xToolbar(url,target,name,options,message,height,width){  
if (message == '') { ok = true } else { ok = confirm(message); }
if (ok==true) {
    if (target == 'window') {
        if (height != '') {
            myTop = (window.screen.height / 2) - ((height / 2) + 10);
            myLeft = (window.screen.width / 2) - ((width / 2) + 10);
            options = 'height=' + height + ',width=' + width + ',top=' + myTop + ',left=' + myLeft + ',' + options;
        }           
        var popup = window.open('',"Loader",options);
        var baseUrls = location.href.split("/")
        var baseUrl = baseUrls[0]+"/"+baseUrls[1]+"/"+baseUrls[2]+"/"+baseUrls[3]+"/"+baseUrls[4]
        popup.document.writeln('<!--fix for ie7-->')
        popup.document.writeln('<!DOCTYPE html>')
        popup.document.writeln('<html><head><style>')
        popup.document.writeln('body, html {width:100%;height:100%;margin:0;padding:0;background:#fff;color:#333;font:Normal 12px Arial, Helvetica, Sans-Serif;}')
        popup.document.writeln('h5 {font-weight:normal; font-size:14px;margin:0 0 10px 0;}')
        popup.document.writeln('#outer {width:100%;height:90%;position:relative;}')
        popup.document.writeln('#outer[id]{display:table;position: static;}')
        popup.document.writeln('#middle {position:absolute;top:50%;width: 100%;text-align:center;}') 
        popup.document.writeln('#middle[id] {display: table-cell;vertical-align: middle;width: 100%;position: static;}')
        popup.document.writeln('#inner {position:relative;top:-50%}')
        popup.document.writeln('</style></head><body>')
        popup.document.writeln('<div id="outer"><div id="middle"><div id="inner"><h5>Processing your request</h5>')
        popup.document.writeln('<img src="'+baseUrl+'/images/toolbar/loader_fan.gif" id="loader" border="0" style="vertical-align:middle"/></div></div></div>')
        popup.document.writeln('<script type="text/javascript">')
        popup.document.writeln('function load(){')
        popup.document.writeln('location.href = "'+baseUrl+"/"+url.replace(/\\/g,'\\\\')+'";')
        popup.document.writeln('loader.setAttribute("src","'+baseUrl+'/images/toolbar/loader_fan.gif");};')         
        popup.document.writeln('</script>')
        popup.document.writeln('</body></html>')
        popup.document.close();
        popup.load();
    } else {
        if (target == 'frame') {
            url += '{amp}EXECUTE_TEMPLATE=$';
            var frame = document.getElementById(name);
            frame.src = url;
        } else {
            location.href = url;

        }
    }
} 
函数xToolbar(url、目标、名称、选项、消息、高度、宽度){
if(message=''){ok=true}else{ok=confirm(message);}
如果(ok==真){
如果(目标=='窗口'){
如果(高度!=''){
myTop=(window.screen.height/2)-(height/2)+10;
myLeft=(window.screen.width/2)-(width/2)+10;
选项='height='+height+'、width='+width+'、top='+myTop+'、left='+myLeft+'、'+options;
}           
var popup=window.open(“”,“加载程序”,选项);
var baseUrls=location.href.split(“/”)
var baseUrl=baseUrls[0]+“/”+baseUrls[1]+“/”+baseUrls[2]+“/”+baseUrls[3]+“/”+baseUrls[4]
popup.document.writeln(“”)
popup.document.writeln(“”)
popup.document.writeln(“”)
popup.document.writeln('正文,html{宽度:100%;高度:100%;边距:0;填充:0;背景:fff;颜色:333;字体:普通12px Arial,Helvetica,无衬线;}'))
popup.document.writeln('h5{字体大小:正常;字体大小:14px;边距:0 10px 0;}'))
popup.document.writeln('#外部{宽度:100%;高度:90%;位置:相对;}'))
popup.document.writeln('#outer[id]{display:table;position:static;}'))
popup.document.writeln(“#中间{位置:绝对;顶部:50%;宽度:100%;文本对齐:中间;}”)
popup.document.writeln('#middle[id]{显示:表格单元格;垂直对齐:中间;宽度:100%;位置:static;}'))
popup.document.writeln(“#内部{位置:相对;顶部:-50%}”)
popup.document.writeln(“”)
popup.document.writeln('处理您的请求')
popup.document.writeln(“”)
popup.document.writeln(“”)
popup.document.writeln('function load(){')
popup.document.writeln('location.href=“”+baseUrl+“/”+url.replace(/\\\/g,\\\\'))+“;”)
popup.document.writeln('loader.setAttribute(“src”,“+baseUrl+”/images/toolbar/loader_fan.gif”);};)
popup.document.writeln(“”)
popup.document.writeln(“”)
popup.document.close();
popup.load();
}否则{
如果(目标=='frame'){
url+='{amp}执行_模板=$';
var frame=document.getElementById(名称);
frame.src=url;
}否则{
location.href=url;
}
}
} 
}

除了WaitToSendRequest()函数外,所有功能都可以正常工作-在本文中,我使用了当前的setInterval延迟3秒,但它不能正常工作。页面将立即卸载。我还为用例使用了setTimeout,但仍然失败

非常感谢您的帮助。很抱歉给出了大量的代码片段,但我觉得这样做很容易理解整个流程


提前感谢。

@Wolff-感谢您的快速响应-但是它与setInterval(CloseDeleteForm(),3000)有什么不同?请从setInterval中的函数名中删除()以使函数在那里运行,然后再运行。如果您只是传递名称(对函数的引用),那么它将按间隔运行它<代码>间隔\关闭=设置间隔(CloseDeleteForm,3000)这在Chrome中有效,但在IE 10中,它不会在确认弹出后关闭新打开的页面…:-(