Javascript Window.open不';t返回窗口引用IE9

Javascript Window.open不';t返回窗口引用IE9,javascript,asp.net,reference,internet-explorer-9,window.open,Javascript,Asp.net,Reference,Internet Explorer 9,Window.open,我正在使用脚本挂载我的mailto链接并调用默认的电子邮件编辑器。但是我不能使用document.location.href,因为IE9中存在一些错误,所以我使用window.open。它起作用了。但是我需要关闭打开的IE窗口 问题在于window.close不返回窗口引用 function doMailto() { var sMailto = 'mailto:?bcc='; sMailto += document.getElementById('<%= txtEmails.C

我正在使用脚本挂载我的mailto链接并调用默认的电子邮件编辑器。但是我不能使用document.location.href,因为IE9中存在一些错误,所以我使用window.open。它起作用了。但是我需要关闭打开的IE窗口

问题在于window.close不返回窗口引用

function doMailto() {
   var sMailto = 'mailto:?bcc=';
   sMailto += document.getElementById('<%= txtEmails.ClientID %>').value;
   out = window.open(sMailto);
   out.close();  //CANT CALL CLOSE, BECAUSE OUT IS NULL
}
函数域(){
var sMailto='mailto:?bcc=';
sMailto+=document.getElementById(“”).value;
向外=窗口打开(sMailto);
out.close();//无法调用close,因为out为NULL
}

您在作业行末尾有一个额外的参数

此外,您是否正在尝试以指定的相同功能关闭窗口?如果没有,您可能需要在函数外部声明窗口变量,以便在需要时关闭它。

除了语法错误(两个逗号,两个父项关闭)

您正在打开浏览器(默认邮件客户端)外部的窗口。您无法通过javascript控制它

可能这是一个直接的问题,请尝试使用:

var out = window.open()...
setTimeout(function(){out.close()}, 200)
然后摆弄200米,看看它是否有效

试一试


您不需要以这种方式打开或关闭任何窗口

可能的重复(使用解决方案):我更改了这些语法错误,发布了错误的代码。但事实是,它打开了默认的邮件客户端,同时也打开了另一个窗口。但是我需要打开默认的邮件客户端,当我使用window.open('mailto:…')时,它会为out变量返回一个空引用!您的修改会导致出现空白页。我知道这是由于Internet保护模式造成的(如果我关闭它,它会工作),但我不能关闭它,因为我不能依赖用户更改本地配置。抱歉,我完全不喜欢此邮件的最大问题是长度超过500个字符。我希望关闭这些新的IE窗口(或返回到以前的URL),虽然默认邮件客户端是打开的(这是一个独立的进程,我不想用javascript关闭它)。
top.location.href = 'mailto:....';