IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

UI Dialog, le contenu généré avec TCPDF fait planter le navigateur


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut UI Dialog, le contenu généré avec TCPDF fait planter le navigateur
    Bonjour à tous,

    j'ouvre un PDF généré avec TCPDF dans une div jquery dialog de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function bordereauEng(num,IDClient){
     
    var param="ID="+IDClient+"&IDActi="+num;
     
    $('#dialog').dialog('option', 'height', 580);
    $('#dialog').dialog('option', 'width', 880);
    $('#dialog').dialog('option', 'title', "Imprimer le bordereau");
    $('#dialog').html('<iframe id="frameBordereau" src="" frameborder="0" height="550" width="850" scrolling="auto"></iframe>');
    $('#frameBordereau').attr("src","imprimer/bordereau.php?type=engag&"+param);
    $('#dialog').dialog('open');
    return false;
    };
    Ma div dialog s'ouvre bien avec le PDF généré, le problème ne semble pas venir du PDF lui même car lorsqu'un PDF créé avec FPDF ou TCPDF est mal formaté on obtient un message d'erreur au lieu du PDF.

    De plus si je l'ouvre dans une Popup simple via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.open("imprimer/bordereau.php?"+param);
    il n'y a aucun problème.

    Donc le problème c'est que lorsque l'on veut fermer la div Dialog en cliquant sur la croix de fermeture en haut à droite de la div, la div se ferme bien mais le navigateur (Firefox) plante...

    L'interface se fige, la barre d'état indique un chargement de données en cour, plus aucune action n'est possible et Firefox finit par se fermer en ouvrant une boite de dialogue de rapport de plantage...

    quelqu'un a-t-il une idée du problème ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    J'oubliai de préciser,

    si j'essaye de charger mon PDF dans la div comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function bordereau(num,IDClient,stage){
     
    var param="ID="+IDClient+"&IDActi="+num;
    if(stage==1)param+="&type=stage";
     
    $('#dialog').dialog('option', 'height', 580);
    $('#dialog').dialog('option', 'width', 880);
    $('#dialog').dialog('option', 'title', "Imprimer le bordereau");
    $('#dialog').load("imprimer/bordereau.php",param);
    $('#dialog').dialog('option', 'position', 'center');
    $('#dialog').dialog('open');
    return false;
    };
    Plus rien ne plante, par contre ce n'est pas un PDF qui s'ouvre mais un code du genre :

    %PDF-1.7 3 0 obj <> endobj 4 0 obj <> stream x��WMs�0��W�e���,�6'R(�2���B9(���q%G��_�5����6 ��a��[�����%a ������>2�N��Gp��R��ɨG;�D�غ�I�'�b@ x1�~@� ��z3����_��L�1 CHo���[ �z�"49�;S\�!a|ť$x�W���|��YE�(�K O`������)YC�J8��d >:�ۉ�����i�.Ջo0z��41? ]��?ۺR��p��[�V��p�5ND�������Ë&������Iwp| 7Z�� � QBP2#�u��@�R{$���dN����� idf-��0�t {��jg�R��X�I��~q'��� �Ֆ@��{>wGb}�%ē#Ǝ�b�A���K����ݬ"��b-

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    FPDF ou TCPDF, je ne connais pas ? S'il s'agit bien de PHP, ce n'est pas le bon forum.

    Voici le code d'un exemple d'affichage d'un PDF dans un « iframe » inclus dans un dialogue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
    	<meta name="Author" content="Daniel Hagnoul">
    	<meta name="description" content="Page type">
    	<title>Page type</title>
    	<link rel="stylesheet" type="text/css" href="../lib/jqueryui-1.8/css/humanity/jquery-ui-1.8.custom.css">	
    	<style>
    		body {
    			background-color:#FFFFFF;
    			color:#000000;
    			font-family:Arial, Helvetica, sans-serif;
    			font-size:medium;
    			font-style:normal;
    			font-weight:normal;
    			line-height:normal;
    			letter-spacing:normal;
    		}
    		h1,h2,h3,h4,h5 {
    			font-family:"Times New Roman", Times, serif;
    		}
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
    			margin:0px;
    			padding:0px;
    		}
    		p {
    			padding:6px;
    		}
    		ul,ol,dl {
    			list-style:none;
    			padding-left:6px;
    			padding-top:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    	</style>
    	<script charset="utf-8" src="../lib/jqueryui-1.8/js/jquery-1.4.2.min.js"></script>
    	<script charset="utf-8" src="../lib/jqueryui-1.8/js/jquery-ui-1.8.custom.min.js"></script>
    	<script>
    		$(document).ready(function(){
    			$('#dialog').dialog(
    				{
    					autoOpen: false,
    					width: 800,
    					height: 600,
    					/* Lorsque inclus dans le dialogue, ne marche pas avec Chrome 2 et IE8 */
    					/*
    					open: function(event, ui) {
    						$("#iPDF").attr({
    							margin: "5%",
    							width: "100%",
    							height: "98%",
    							src: $(this).attr("pdfURL")
    						}).show();
    					},
    					*/
    					close: function(event, ui) {
    							// on arrive toujours ici, que l'utilisateur ait cliqué sur OK ou sur la case de fermeture
    							$("#iPDF").hide();
    					},
    					buttons: {
    						"Ok": function(event, ui) {
    							$(this).dialog("close"); 
    						}
    					}
    				}
    			);
     
    			$('.popupPDF').click(function () {
    				$("#dialog").dialog('open');
    				/* Lorsque inclus dans le dialogue, ne marche pas avec Chrome 2 et IE8 */
    				/* Les réglages width et height sont OK pour F3, IE8. */
    				/* Et C2 si frameborder="0" */
    				$("#iPDF").attr({
    					margin: "5%",
    					width: "100%",
    					height: "98%",
    					src: $(this).attr("pdfURL"),
    					overflow: "hidden"
    				}).show();
    				return false;
    			});		
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur">
    		<!--
    			il y a un délai entre le click et l'affichage du PDF,
    			sa durée dépens de la taille de PDF et du navigateur
    		-->
    		<a href="#" pdfURL="../mail.pdf" class="popupPDF">Télécharger la plaquette</a>
    		<div id="dialog" title="La plaquette">
    			<!-- frameborder uniquement pour Chrome 2 qui s'amuse à mettre des barres -->
    			<iframe id="iPDF" frameborder="0"></iframe>
    		</div>
    	</div>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    Bonjour Daniel,

    Merci de ta réponse.

    Afin de vérifier que je ne me trompais pas de forum j'ai supprimé tout l'aspect TCPDF qui est effectivement une biblio PHP

    Je me contente donc d'afficher un PDF existant dans une Div jQuery.dialog.

    Mon code n'est pas tout à fait le même que ton exemple car ma div dialog est utilisée pour afficher aussi d'autres choses que le PDF.

    Voici un exemple basique qui fait planter le navigateur lorsque l'on clique sur la croix de fermeture de la div dialog.

    cliquer ici pour voir l'exemple

    et voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Bordereau</title>
     
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery-ui-min.js"></script>
     
    <link type="text/css" href="css/ui/ui.theme.css" rel="Stylesheet" />
    <link type="text/css" href="css/ui/ui.core.css" rel="Stylesheet" />
    <link type="text/css" href="css/ui/ui.dialog.css" rel="Stylesheet" />
     
    <script>
     
    $(document).ready(function() {
    $("#dialog").dialog({
    autoOpen: false,
    resizable: false,
    close: function(){
    $("#frameBordereau").hide();
    $(this).html("");
    },
    bgiframe: true,
    modal: true
    });
    });
     
     
    function bordereau(){
    $('#dialog').dialog('option', 'height', 580);
    $('#dialog').dialog('option', 'width', 880);
    $('#dialog').dialog('option', 'title', "Imprimer le bordereau");
    $('#dialog').html('<iframe id="frameBordereau" src="" frameborder="0" height="550" width="850" scrolling="auto"></iframe>');
    $('#frameBordereau').attr("src","5_tests.pdf");
    $('#dialog').dialog('open');
    return false;
    };
     
    </script>
     
    </head>
    <body style="font-family:Arial, Helvetica, sans-serif; font-size:12px">
     
    <div align="center" style="padding-top:100px"><input value="voir le bordereau" type="button" onclick="bordereau()" /></div>
     
    <div align="center" id="dialog" style="margin:0px"></div>
    </body>
    </html>
    Pourquoi ce code fait-il planter le navigateur ?

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Je viens de tester votre lien et votre code exemple sur mon ordinateur avec C 4.1, IE 8 et F 3.6.3 et il n'y a aucun problème !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [10g] Le close_form fait planter mon navigateur
    Par mich34 dans le forum Forms
    Réponses: 3
    Dernier message: 19/02/2014, 17h13
  2. Javascript dans textarea fait planter le navigateur
    Par CyrilD dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/08/2010, 15h28
  3. Réponses: 6
    Dernier message: 29/07/2010, 10h49
  4. upload qui fait planter le navigateur
    Par Sheriff dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/12/2006, 13h19
  5. Réponses: 2
    Dernier message: 18/03/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo