mailto link ne fonctionne pas dans un environnement chrome (sur https))

j'ai un lien mailto sur une page. Il fonctionne comme prévu lorsque la page est chargée par lui-même.

cependant quand la page est chargée via un frameset dans Chrome rien ne se passe. Avec les outils de développement chargés l'erreur "[blocked] The page at https://mysite.com ran insecure content from mailto:..." est affichée.

Comment puis-je corriger/contourner cela?

24
demandé sur Dale Burrell 2013-10-08 01:00:05

7 réponses

j'ai aussi eu ce problème récemment avec un iframe. L'utilisation du cadre supérieur a fonctionné et devrait être compatible avec tous les principaux navigateurs.

window.top.location = 'mailto:...';
23
répondu Jason Hardies 2013-11-12 18:59:54

Oui, utiliser "top" est l'astuce, mais vous pouvez le faire avec HTML seul!

<a target="_top" href="mailto:...">email</a>
26
répondu kendsnyder 2014-04-22 16:07:01

Voici la solution avec laquelle j'ai fini: Testé avec Chrome, Firefox, IE6, IE7, IE8, IE9, IE10, IE11, Safari

$("a[href^='mailto:']").on("click",function() {
    window.top.location = $(this).prop("href");
    return false;
});
6
répondu Davin 2013-11-18 16:21:21

peut-être parce que votre frameset parent est https, mais Chrome semble maintenant traiter le lien mailto comme non sécurisé.

je viens de rencontrer un problème similaire lors du déclenchement d'un lien mailto via

window.location = 'mailto:...'

le changer en ceci a fonctionné autour de lui.

window.open( 'mailto:...')
1
répondu Hugh 2013-10-14 07:47:50

c'est ma solution jusqu'à ce que Chrome bug est corrigé:

$.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;
}

pour Chrome, créer une instance avec window.ouvrez la méthode () et fermez cette instance immédiatement. Petite fenêtre "clignotera" pendant une courte période, mais fera le travail. C'est une solution" sale " mais autant que le bug de Chrome.

Pour les autres navigateurs fenêtre.position() méthode peut être utilisée.

1
répondu mikikg 2013-10-22 12:47:53

cela fonctionnera aussi, et ne fermera pas la fenêtre avec facebook....

<a href="mailto:..." target="_blank">...</a>

ou

$("a[href^='mailto:']").attr('target','_blank');
1
répondu Sergei Zahharenko 2014-08-13 12:12:36

ajouter cible=" _top "ou" _blank "ou" _parent "

<a target="_top" href="mailto:a@b.c">email1</a>

<a target="_top" href="mailto:a@b.c">email2</a>

1
répondu Wynston 2014-09-12 04:37:27