2017-08-16 1 views
1

Je ne peux pas le faire fonctionner. La seule chose dont j'ai besoin - définir toute la famille de polices de contenu à 'Open Sans'. Voici ce que j'ai en ce momentJS: window.open - comment configurer la police Open Sans?

 var popupWin = window.open('', '_blank', 'width="100%",height="100%"'); 
     popupWin.document.write('<html><head><link href=\'http://fonts.googleapis.com/css?family=Open+Sans\' rel=\'stylesheet\' type=\'text/css\'></head><body>' + content + '</body></html>'); 
     popupWin.document.body.setAttribute('style', 'font-family: \'Open Sans\' !important'); 
     popupWin.document.close(); 
     popupWin.print(); 
     popupWin.close(); 
    } 

Ce morceau de code show page blanche, mais quand je suppression link attribut le contenu est affiché, mais en famille par défaut. Des idées?

P.S. la variable contenu tient simple balise html, je tentais de définir le style comme

<div style="font-family='Open Sans'">

mais pas de chance.

+1

Êtes-vous ouvrant la page d'un onglet HTTPS? Si c'est le cas, le navigateur bloquera votre demande à "http: // ....". Essayez de supprimer le protocole 'href = \ '// fonts.googleapis.com/css? Family = Open + Sans \'' – DrColossos

+0

Oui, j'utilise un HTTPs, mais comment puis-je supprimer le protocole, le Open Sans n'est pas une police standart, je dois le télécharger –

+1

Le commentaire vous montre comment. Supprimez juste 'http:' (gardez les barres obliques) du début de l'attribut 'href'. – Phylogenesis

Répondre

1

Remplacez http par https. Vous pouvez également ajouter un délai avant l'impression. Essayez ce qui suit:

document.querySelector('button').onclick = function() { 
 
    var content = document.querySelector('textarea').innerHTML; 
 

 
    var popupWin = window.open('', '_blank', 'width="100%",height="100%"'); 
 
    if (popupWin) { 
 
    console.log('Popup was blocked'); 
 
    return false; 
 
    } 
 
    popupWin.document.write('<html><head><link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css"></head><body>' + content + '</body></html>'); 
 
    popupWin.document.body.setAttribute('style', 'font-family: "Open Sans" !important'); 
 
    setTimeout(function() { 
 
    popupWin.document.close(); 
 
    popupWin.print(); 
 
    popupWin.close(); 
 
    }, 2000); 
 
};
<h1>Test</h1> 
 
<textarea>Put this on the popup page</textarea> 
 
<button>Print</button>

+0

C'est étrange, mais le problème a disparu seulement après l'ajout de retard, pouvez-vous expliquer pourquoi? –

+0

Je pense que la fonction d'impression n'attend pas le chargement des ressources. – styfle