2011-12-30 55 views
1
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中,新标签页/窗口关闭,因为它应该。mailto uri - javascript window.open然后关闭,仍然保持打开在<IE8

但是,在IE8及以下版本中,会打开一个新窗口,并且用户会收到安全警告。

有没有更好的方法来解决这个问题,以防止这些问题?

jsbin:http://jsbin.com/itazab

+0

把这个'win.open(“”,“_self”,“” );''在这个'win.close();' – noob 2011-12-30 16:55:59

+0

前面我也做了一些挖掘,发现这可能发生在本地开发与发布之后(不同区域等) – Jason 2011-12-30 17:01:13

回答

3

这是不是最佳的打开你需要关闭窗口。 如果你没有得到你可以使用的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> 
+0

这些变化实际上并没有返回任何东西 - 展望没有打开,它没有抛出任何错误 – Jason 2011-12-30 17:42:37

+0

尝试'onmousedown'而不是'onclick' – noob 2011-12-30 18:43:02

+0

看到更新..... – mplungjan 2011-12-30 21:49:05

相关问题