【问题标题】:Window.open doesn't return the window reference IE9Window.open 不返回窗口引用 IE9
【发布时间】:2012-01-26 14:17:26
【问题描述】:

我正在使用脚本来挂载我的 mailto 链接并调用默认的电子邮件编辑器。但是由于IE9中的一些错误,我不能使用document.location.href,所以我使用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
}

【问题讨论】:

标签: javascript asp.net reference internet-explorer-9 window.open


【解决方案1】:

在作业行的末尾有一个额外的括号。

另外,您是否尝试在分配的相同功能中关闭窗口?如果没有,您可能需要在函数外部声明 window 变量,以便在需要时将其关闭。

【讨论】:

  • 我希望关闭这些新的 IE 窗口(或返回之前的 URL),同时默认邮件客户端是打开的(这是一个独立的进程,我不想通过 javascript 关闭它。跨度>
【解决方案2】:

除了语法错误(两个逗号,两个括号结束)...

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

也许这是一个直接的问题,尝试使用:

var out = window.open()...
setTimeout(function(){out.close()}, 200)

然后摆弄 200 毫秒看看它是否有效。

试试

top.location.href = 'mailto:....';

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

【讨论】:

  • 我更改了这些语法错误,我发布了错误的代码。但事实是,它打开了默认的邮件客户端,同时还打开了另一个窗口。
  • André,您的代码按原样运行。但是我需要打开默认的邮件客户端,当我使用 window.open('mailto:....') 时,它会为 out 变量返回一个空引用!
  • 您的修改导致空白页。我知道这是由于 Internet 保护模式造成的(如果我将其关闭,它将起作用),但是一旦我不能依赖用户更改本地配置,我就无法将其关闭。
  • 对不起,我已经不爱了
  • 这个 mailto 的最大问题是长度超过 500 个字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多