2017-07-08 2 views
0

J'ai suivi un example pour implémenter une roulette lorsqu'un bouton est demandé. Ce code charge un font.Chargement des polices lors du chargement de la page

Mon problème est que le bouton appelle un ajax et la police est chargée après l'appel ajax (malgré le changement d'icône de bouton est d'abord demandé par javascript). Les ajax et les polices sont appelées à partir d'un serveur local. Ce serveur n'est pas multi-tâches et lorsque l'ajax est appelé, la police n'est pas chargée tant que l'appel ajax n'est pas terminé.

Existe-t-il un moyen de forcer le navigateur à charger la police au début lors du chargement de la page?

$('.btn').on('click', function() { 
 
    var $this = $(this); 
 
    $this.button('loading'); 
 
    setTimeout(function() { 
 
     $this.button('reset'); 
 
    }, 800000); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/js/bootstrap.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"/> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div style="margin:3em;"> 
 
<button type="button" class="btn btn-primary btn-lg " id="load" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> Processing Order">Submit Order</button> 
 
<br> 
 
    <br> 
 
<button type="button" class="btn btn-primary btn-lg" id="load" data-loading-text="<i class='fa fa-spinner fa-spin '></i> Processing Order">Submit Order</button> 
 
</div>

MISE À JOUR

Mon code a une telle structure:

$(button).button('loading'); 

$.post("/my_page", 
    JSON.stringify({ 
      param: "1234", 
        }), 
    function(data) 
    { 
     // .... 
     $(button).button('reset'); 
    } 
    ) 
    .fail(function(xhr, status, error) 
    { 
     // error handling 
     $(button).button('reset'); 
    }); 
+0

Je ne peux pas voir une police chargée après la fin du délai dans votre exemple. Voulez-vous que votre bouton utilise une police différente après le délai d'attente? – threeFatCat

+0

@threeFatCat, ce que je veux, c'est que la police se charge immédiatement lorsque la page se charge. Ainsi, avant d'appuyer sur le bouton, la police est chargée. Je ne peux pas répliquer le serveur C++ ici. S'il vous plaît voir la mise à jour. – ar2015

Répondre

0

Alors cela va faire .. Une fois que la page se charge et le script est prêt. faire un appel ajax pour charger vos polices ..

$(document).ready(function(){ 
    //your ajax.. call here to load the font. 
}); 
+0

L'ajax ne charge pas la police. L'ajax appelle une page qui prend quelques secondes pour répondre. La police est chargée par le script bootstrap hors de mon contrôle. – ar2015

+0

Vous pouvez essayer [ceci] (https://stackoverflow.com/questions/4383226/using-jquery-to-know-when-font-face-fonts-are-loaded) – threeFatCat