3

我正在构建一个用于大公司的社交书签应用程序。

它有一个简单的 JavaScript 书签,目前运行良好——书签允许用户从流行的浏览器中保存书签。它非常适用于公共网络链接 - 并且与浏览器完全无关。这种小书签最接近的例子是:

http://delicious.com/help/bookmarklets

当我在浏览器中查看 PDF 时(比如说 Chrome/Mac):

http://website.com/file.pdf

这当然行不通——因为无法在浏览器中查看的 PDF 上注入 HTML 标记。

使指向非 http 资源的链接在书签中起作用的最佳方法是什么?我是否必须创建然后注入某种不可见的 iframe,然后抓取父框架及其 URL 才能保存它?

4

1 回答 1

2

我不了解所有浏览器,但在 Firefox 中,您可以在 PDF 文件和图像上注入 Javascript 和 iFrame。这是因为图像和 PDF 文件实际上显示在 Firefox 生成的特殊虚拟 HTML 页面中。我认为Chrome可能是一样的。

您可以通过打开 PDF 或图像然后打开 Web 控制台(必须使用菜单,在这种情况下不能使用 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。我服务器上的那个页面会让用户完成书签过程。

于 2013-01-09T18:19:16.690 回答