2013-01-09 2 views
2

Je construis une application de bookmarking social pour une utilisation dans les grandes entreprises.Comment enregistrer des fichiers PDF dans un navigateur Web en utilisant un bookmarklet?

Il a un bookmarklet JavaScript simple qui fonctionne actuellement très bien - le bookmarklet permet aux utilisateurs de sauvegarder un signet des navigateurs les plus populaires. Il fonctionne très bien pour les liens web publics - et est assez agnostique pour les navigateurs. Le plus proche exemple d'un tel bookmarklet est la suivante:

http://delicious.com/help/bookmarklets

Quand je suis l'affichage d'un PDF dans mon navigateur (disons que Chrome/Mac):

http://website.com/file.pdf

Cela ne fonctionne pas de Bien sûr, car il n'y a aucun moyen d'injecter du code HTML sur le dessus d'un PDF vu dans le navigateur.

Quelle est la meilleure approche pour faire des liens vers des ressources non-http dans un bookmarklet? Dois-je créer puis injecter un type d'iframe invisible, puis saisir un cadre parent et son URL pour pouvoir le sauvegarder?

Répondre

1

Je ne connais pas tous les navigateurs, mais dans Firefox, vous pouvez injecter Javascript et iFrames sur des fichiers PDF et des images. En effet, les images et les fichiers PDF sont en fait affichés dans des pages HTML fictives spéciales générées par Firefox. Je pense que Chrome peut être le même.

Vous pouvez voir cela par vous-même en ouvrant un fichier PDF ou une image, puis en ouvrant la console Web (vous devez utiliser le menu, ne pouvez pas utiliser CTRL + MAJ + K dans ce cas) pour obtenir la console JS puis tapez document.documentElement.outerHTML le code HTML réel où le PDF ou l'image est intégré.

Pour détecter des situations dans lesquelles je ne peux pas ajouter un iFrame ou un autre HTML à une page, je peux tester si document.documentElement est défini, ou éventuellement un autre élément DOM.

Pour toute combinaison de navigateur ou de type de fichier où cela ne fonctionnera pas, ou si je voulais simplement garder les choses plus simples, j'ouvrirais une page sur mon serveur dans un nouvel onglet et passerais le titre de la page emplacement à cette page comme http://mysocialsite.tld/add-bookmark?title=file.pdf&location=http://anothersite.tld/file.pdf. Cette page sur mon serveur permettrait à l'utilisateur de compléter le processus de bookmarking.

+0

C'est génial, merci pour l'observation. Connaissez-vous l'état de la situation dans IE (quelle que soit la version spécifique) - dans ce que sera la même astuce d'injection dans IE? –

+0

Pour IE8 (version la plus élevée disponible sur XP), le "tour" ne fonctionnera pas sur PDF. Il semble qu'aucun javascript ne fonctionnera en PDF. Pour les images, il y a un HTML fictif et JavaScript sera exécuté. C'est tout ce que je peux dire. Il est possible qu'il y ait des limites à ce qui peut être fait. Aussi, s'il vous plaît accepter ma réponse en cliquant sur la coche verte à gauche de celui-ci. –

Questions connexes