我在页面上有一个mailto链接。当页面单独加载时,它按预期工作。
但是当通过Chrome的frameset加载页面时,什么也不会发生。开发者工具加载后,会显示错误信息"[blocked] The page at https://mysite.com ran insecure content from mailto:..."
。
我应该如何修复或绕过此问题?
我在页面上有一个mailto链接。当页面单独加载时,它按预期工作。
但是当通过Chrome的frameset加载页面时,什么也不会发生。开发者工具加载后,会显示错误信息"[blocked] The page at https://mysite.com ran insecure content from mailto:..."
。
我应该如何修复或绕过此问题?
是的,使用"top"是诀窍,但你可以仅使用HTML来完成它!
<a target="_top" href="mailto:...">email</a>
mailto:
链接! - Warpling最近我也遇到了一个iframe的问题。使用顶层框架解决了问题,并且应该兼容所有主流浏览器。
window.top.location = 'mailto:...';
这是我最终得出的解决方案: 已经测试过Chrome、Firefox、IE6、IE7、IE8、IE9、IE10、IE11、Safari
$("a[href^='mailto:']").on("click",function() {
window.top.location = $(this).prop("href");
return false;
});
<a href="mailto:..." target="_blank">...</a>
或者
$("a[href^='mailto:']").attr('target','_blank');
添加 target="_top" 或 "_blank" 或 "_parent"
<a target="_top" href="mailto:a@b.c">电子邮件1</a>
<a target="_top" href="mailto:a@b.c">电子邮件2</a>
window.location = 'mailto:...'
window.open( 'mailto:...')
这是我的解决方法,直到Chrome的bug被修复:
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
myWindow=window.open("mailto:"+eml+"?subject="+msb,'','width=50,height=50');
myWindow.close();
} else {
window.location.href = "mailto:"+eml+"?subject="+msb;
}
对于Chrome浏览器,可以使用window.open()方法创建一个实例并立即关闭该实例。小窗口会在短时间内“闪烁”,但可以完成任务。这是一种“不太优雅”的解决方案,但与Chrome的bug一样。
对于其他浏览器,可以使用window.location()方法。
tel:
链接也会受到影响。相同的解决方案适用。 - Álvaro González