2010-11-29 17 views
0

Je suis un javascript noob, donc cette question peut sembler très basique et je pourrais avoir besoin de beaucoup de directions :) Ceci est l'effet que je veux créer:Messages de HTML/JS tandis qu'un PDF est ouvert

L'utilisateur consulte actuellement un fichier PDF dans le navigateur. Le document est incorporé avec la balise dans le code HTML. Mon PDF contient des formulaires, donc il y a des traitements (validations, etc.) que je fais dans le PDF lorsque l'utilisateur interagit avec lui. Parfois, après avoir saisi immédiatement une valeur, l'utilisateur ferme le PDF - et mon dernier traitement est incomplet.

Dans un tel cas, je voudrais (1) arrêter la fermeture du PDF jusqu'à ce que mon traitement soit terminé (le HTML connaît le statut de traitement du PDF, le HTML sait quand une fermeture peut être autorisée) (2) Alors que j'ai arrêté le PDF de la fermeture, après que l'utilisateur a essayé de fermer la fenêtre, je veux lui montrer une sorte de message indiquant que le PDf n'est pas encore fait avec le traitement (3) Quand le message de (2) est affiché à l'utilisateur, l'interaction avec le PDF doit être désactivée - et idéalement ce fait devrait être exprimé visuellement. Par exemple, le PDF peut apparaître grisé en arrière-plan du message (4) Après que j'ai terminé le traitement, je veux fermer la fenêtre du navigateur

Pour (1), (4) J'utilise onbeforeunload, et cela sert bien mes objectifs. Mais sur le front de l'utilisabilité - (2), (3) - je n'ai aucune idée de la façon dont je dois procéder. Il pourrait être en quelque sorte ce que Google Image search does when you click on a thumbnail on the main page. - il y a une image au premier plan (je pourrais la remplacer par un message personnel), le fond est grisé. Cependant, il n'empêche pas les interactions avec l'arrière-plan - en cliquant dessus, cela m'amène à la page Web d'origine. Aussi, je ne sais pas si le JS fonctionnera quand un PDF est déjà ouvert.

Merci!

+0

Le document est incorporé avec quelle étiquette? (Échapper la balise HTML en utilisant <, sinon SO l'abandonnera). – Martijn

Répondre

0

< object id = "PDFcontent" data = "untitled1.pdf" type = "text/html" width = "100%" height = "100%" />

1

Pour le bénéfice des autres, Squarehead de répondre à sa propre question est d'intégrer le plugin PDF dans une page HTML tout en le faisant remplir la fenêtre. Il apparaîtra de la même manière, mais le code HTML et tout javascript associé seront toujours présents et, si vous avez affaire à des navigateurs qui ne permettent pas le chevauchement des contenus, vous pouvez simplement utiliser Javascript pour réduire la hauteur de la vue PDF par un couple de em chaque fois qu'un message doit être affiché afin de faire de la place pour une barre de notification.

Sauf erreur, width="100%" height="100%" n'est pas valide XHTML. La solution appropriée serait d'utiliser style="width: 100%; height: 100%" ou l'ajouter à la feuille de style.

#PDFcontent { width: 100%; height: 100%; } 

Mise à jour: En ce qui concerne la prévention de l'utilisateur de fermer le PDF avant le traitement est terminé, la capacité de le faire est très limitée afin de minimiser la possibilité d'abus, donc tout ce que vous pouvez vraiment faire de manière fiable est afficher un "Êtes-vous sûr?" dialogue.

Voici le code que j'utilisé dans un de mes projets:

window.onbeforeunload = function() { 
    if ($('#quote_preview').text() != "" && document.submit_warn) { 
     return "The currently-entered quote has not been" + 
       " submitted. Are you sure you want to discard it?"; 
    } 
}; 

J'utilise jQuery dans ce cas, mais l'idée de base est que vous attribuez une fonction comme gestionnaire onbeforeunload qui détermine si un " Êtes-vous sûr?" La boîte de dialogue doit être affichée et, si c'est le cas, renvoie le texte à afficher.

Le navigateur contrôle l'explication supplémentaire (le cas échéant) qui sera affichée, à quoi ressembleront les boutons OK/Annuler et si la manipulation de la page est bloquée lorsque la boîte de dialogue est ouverte. Je ne pense pas qu'il soit possible de contrôler ce dernier soi-même.

+0

On dirait que j'ai bousillé sthg --- J'avais l'intention de commenter sur Martjins Comment .... J'espère que le fil est toujours ouvert! J'ai encore besoin d'aide avec (2), (3) – abhgh

+0

Vous devriez avoir cliqué sur "ajouter un commentaire" sous le commentaire de Martijn ... bien qu'il se peut que vous ayez besoin de plus de points de réputation avant qu'il n'apparaisse. Je ne peux pas me rappeler quelles sont les règles sur les commentaires en réponse à vos propres messages. (Voir la FAQ pour plus de détails) – ssokolow