2011-12-30 51 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