Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1207 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Lancer une navigation, puis l'impression, le tout dans une frame ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer une navigation, puis l'impression, le tout dans une frame ?

n°2322607
DiB91
Bwaaaaaaah
Posté le 19-10-2018 à 10:19:39  profilanswer
 

Bonjour HFR :)
 
Aujourd'hui, dans le cadre d'un développement au boulot, je me retrouve bloqué face à une situation pour laquelle je ne trouve aucune solution fonctionnelle :/
Pardon à l'avance pour la catégorisation de ce topic, mais (vous le verrez) je ne sais pas laquelle lui correspond le mieux entre .NET, C#, VBS et pur HTML+JS...
 
Le contexte est assez "dense", le voici :
Il s'agit d'un site Web interne, reposant sur 5 projets d'applications .NET écrits dans différents langages (de nombreux développeurs se sont succédé au fil des années).
L'UI de base (appelons-la "coquille" ) est écrite en ASP Classic (HTML/JavaScript + VB Script), et fait appel via des iframe à d'autres projets (appelons les "api" ) plus récents (ASP .NET MVC avec C# et VB .NET).
Toutes ces applications sont articulées autour d'une base de données SQL Server unique (ouf, c'est déjà ça ;)).
 
C'est justement cette répartition qui me pose actuellement problème : depuis une page de la "coquille" (disons "dashboard.asp" ), j'affiche dans une <iframe/> une page d'un projet MVC (disons "User/Dashboard" ) qui me retourner une vue (disons "Dashboard.cshtml" ) contenant des données provenant de la base de données dans un tableau, jusque là, si vous avez suivi, tout fonctionne.
Pour une évolution récente, j'ai besoin d'ajouter un bouton "Print" sur chaque ligne de ce tableau, qui est sensé générer un bon de commande et le sortir à l'impression.
 
Le problème, c'est que ce bon de commande est généré par une page du projet "coquille" (disons "boncommande.asp?id=xxx" où xxx correspond à l'id de la ligne du tableau).
Il faut donc que depuis "Dashboard.cshtml" d'un projet MVC, je puisse lancer la navigation vers "boncommande.asp" d'un autre projet, et en lancer l'impression.
 
Là où je bloque, c'est que bien entendu "boncommande.asp" est une page qui ne sert pas qu'à l'impression et dispose donc de ses feuilles de style et script appliqués à l'ouverture ( document.ready()).
Du coup, aucune des techniques que j'ai utilisées (qui consistent à chaque fois à ajouter une <iframe/> invisible ou d'ouvrir une nouvelle windows Javascript) ne peuvent fonctionner.
Au mieux, j'ai le style qui s'applique, mais (et c'est bien normal) aucun script n'est exécuté (et donc certains éléments de la page ne sont pas calculés/initialisés).
Enfin, j'ai essayé le bon vieil appel AJAX injecté dans le .html() d'une <div/> invisible, mais je me heurte évidemment à la barrière de l'appel AJAX cros-domain entre mon appli "coquille" et mon "api" MVC.
 
Alors déjà, merci aux quelques courageux qui auront lu jusque là :D
Ensuite, avez-vous une idée ?
 
Je suis persuadé qu'il y a un truc bien plus simple à faire (tout transférer côté MVC peut être, et générer un PDF depuis une méthode FileResult ?), mais je bloque depuis des jours, j'ai le nez dedans, j'ai les idées embrouillées, je pense qu'un oeil externe m'aiderait :jap:
 
Merci à vous :)
:hello:


---------------
La DiBerie | Rehost | Link
mood
Publicité
Posté le 19-10-2018 à 10:19:39  profilanswer
 

n°2322652
mechkurt
Posté le 19-10-2018 à 18:06:10  profilanswer
 

J'ai rien compris, mais si le seul problème est lié a des problème de communication entre les iframes à cause de crossdomain policy,  ça doit pouvoir se régler en autorisant certain domain à communiquer entre eux...
 
Par exemple en spécifiant le même domaine dans ta page principal et dans tes iframes :

Code :
  1. <script>
  2. document.domain = 'mon-nom-de-domaine';
  3. </script>


 
Tu as la main sur tous les scripts ?
 
Car si oui, tu doit pouvoir créer une fonction au niveau du dessus qui appelle de window.print() dans ton iframe une fois le rendu final effectues.


---------------
D3
n°2322685
DiB91
Bwaaaaaaah
Posté le 20-10-2018 à 07:47:10  profilanswer
 

Bonjour Mechkurt.
 
Merci pour ta réponse.
En effet, c'est une solution comme ça que j'ai implémentée à défaut de mieux : je propage un paramètre dans la query qui traverse les projets (= la src de mon iframe, qui pointe vers le projet MVC).
Je détecte ce paramètre au document.load(), et déclenche un window.print().
 
En faisant comme ça, je m'affranchis du cross domain policy.
Il me reste quelques trucs à gérer (le CSS et les scripts à appliquer à la nouvelle window générée), mais dans l'ensemble, ça me semble être la bonne piste :jap:
 
Merci :jap:


---------------
La DiBerie | Rehost | Link

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Lancer une navigation, puis l'impression, le tout dans une frame ?

 

Sujets relatifs
[ACCESS] impression multiples reports in oneImpression condiditionnelle d'une cellule excel
CSS Menu navigation responsive et fixeImpression et mise en page automatique
[Nodejs] lancer un node inspector avec NODE_ENVlancer un programme python en ligne de commande sous windows
Aperçu avant impression APRES print.css[Batch] Lancer un application avec control
lancer vidéos à partir d'une page HTML en local, c'est possible ?javascript et barre de navigation
Plus de sujets relatifs à : Lancer une navigation, puis l'impression, le tout dans une frame ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR