2013-01-09 3 views
2

Я создаю приложение для социальных закладок для использования в крупных компаниях.Как сохранить PDF-файлы в веб-браузере - используя букмарклет?

У этого есть простой букмарклет JavaScript, который в настоящее время отлично работает - букмарклет позволяет пользователям сохранять закладки из популярных браузеров. Он хорошо работает для общедоступных веб-ссылок - и является довольно агроническим браузером. Ближайший пример такого букмарклета заключается в следующем:

http://delicious.com/help/bookmarklets

Когда я просмотр PDF в браузере (скажем, Chrome/Mac):

http://website.com/file.pdf

Это не работает в Конечно, поскольку нет способа вставить HTML-разметку поверх PDF-файла, просматриваемого в браузере.

Каков наилучший подход к созданию ссылок на ресурсы, отличные от http, в рамках букмарклета? Должен ли я создавать, а затем вводить какой-то невидимый iframe, а затем захватывать родительский фрейм и его URL-адрес, чтобы он мог его сохранить?

ответ

1

Я не знаю обо всех браузерах, но в Firefox вы можете вставлять Javascript и iFrames поверх файлов и изображений PDF. Это связано с тем, что изображения и файлы PDF фактически отображаются внутри специальных фиктивных HTML-страниц, созданных Firefox. Я думаю, что Chrome может быть таким же.

Вы можете увидеть это сами, открыв PDF-файл или изображение, а затем откройте веб-консоль (в этом случае необходимо использовать меню, не использовать CTRL + SHIFT + K), чтобы получить консоль JS, а затем введите document.documentElement.outerHTML, чтобы увидеть фактический фиктивный HTML, в который встроен PDF или изображение.

Чтобы обнаружить ситуации, когда я не могу добавить iFrame или другой HTML-код на страницу, я могу проверить, установлен ли document.documentElement или, возможно, какой-либо другой элемент DOM.

Для любой комбинации браузера или типа файла, где это не будет работать, или если я просто хотел, чтобы вещи были более простыми, я бы открыл страницу на своем сервере в новой вкладке или окне и передал заголовок страницы и расположение к этой странице, как http://mysocialsite.tld/add-bookmark?title=file.pdf&location=http://anothersite.tld/file.pdf. Эта страница на моем сервере позволит пользователю завершить процесс закладок.

+0

Это замечательно, спасибо за наблюдение. Вы случайно знаете состояние игры в IE (какая бы конкретная версия) - в этом будет работать тот же трюк с инъекциями в IE? –

+0

Для IE8 (самая высокая версия доступна на XP), «трюк» не будет работать в PDF. Кажется, что javascript не будет работать над PDF. Для изображений есть фиктивный HTML и JavaScript будет работать. Это все, что я могу сказать. Возможно, могут быть ограничения на то, что можно сделать. Также, пожалуйста, примите мой ответ, щелкнув зеленую галочку слева от нее. –

Смежные вопросы