mailto uri - javascript window.open, а затем закрыть, все еще остается открытым в <IE8 - PullRequest
1 голос
/ 30 декабря 2011
function SendInfo(href) {
    var subject= "Some information";
    var body = "I thought you might find this information interesting:\r\n\r\n<";
    body += document.location;
    body += ">";
    var uri = "mailto:?subject=";
    uri += encodeURIComponent(subject);
    uri += "&body=";
    uri += encodeURIComponent(body);
    win = window.open(uri);
    win.close();
}

В FF, Chrome и IE9 новая вкладка / окно закрывается, как и должно.

Однако в IE8 и ниже открывается новое окно, и пользователь получает предупреждение безопасности.

Есть ли лучший способ подойти к этому, чтобы предотвратить эти проблемы?

jsbin: http://jsbin.com/itazab

1 Ответ

3 голосов
/ 30 декабря 2011

Не оптимально открывать окно, которое вам нужно закрыть. Если вы не получили предупреждение, вы можете использовать setTimeout так:

win = window.open(uri);
setTimeout(function() { win.close();},1000);

Вместо этого я предлагаю вам сделать это

function SendInfo(href) {
  var subject= "Some information";
  var body = "I thought you might find this information interesting:\r\n\r\n<";
  body += href; // or document.location;
  body += ">";
  var uri = "mailto:?subject=";
  uri += encodeURIComponent(subject);
  uri += "&body=";
  uri += encodeURIComponent(body);
  return uri;
}

<a href="#" onclick="this.href=SendInfo(location.href)">Tell a friend</a>
...