如何使用书签在任何网站的页面中显示表单(如 Google Reader 中的 Note)?

Posted

技术标签:

【中文标题】如何使用书签在任何网站的页面中显示表单(如 Google Reader 中的 Note)?【英文标题】:How to display a form in any site's pages using a bookmarklet (like Note in Google Reader)? 【发布时间】:2010-09-09 05:22:24 【问题描述】:

在 Google 阅读器中,您可以使用书签“记下”您正在访问的页面。当您按下小书签时,当前页面顶部会显示一个小的 Google 表单。在表单中您可以输入描述等。当您按下提交时,表单在不离开页面的情况下自行提交,然后表单消失。总而言之,非常流畅的体验。

我显然想看看它是如何完成的,但最有趣的部分被缩小且不可读。所以……

关于如何实现这样的东西(在浏览器端)的任何想法?有哪些问题?描述此内容的现有博客文章?

【问题讨论】:

【参考方案1】:

Aupajo 说得对。不过,我会向您介绍我为我们的网站 (www.iminta.com) 设计的书签框架。

书签本身的内容如下:

javascript:void((function()
    var e=document.createElement('script');
    e.setAttribute('type','text/javascript');
    e.setAttribute('src','http://www.iminta.com/javascripts/new_bookmarklet.js?noCache='+new%20Date().getTime());
    document.body.appendChild(e)
)())

这只是将一个新脚本注入到包含该文件的文档中:

http://www.iminta.com/javascripts/new_bookmarklet.js

请务必注意,小书签会创建一个 iframe、定位它并向文档添加事件,以允许用户执行诸如点击转义(关闭窗口)或滚动(使其保持可见)之类的操作。它还隐藏了不能很好地使用 z 定位的元素(例如,闪光灯)。最后,它有助于与 iframe 中运行的 javascript 进行通信。这样,您可以在 iframe 中有一个关闭按钮,告诉父文档删除 iframe。这种跨域的东西有点hacky,但这是唯一的方法(我见过)。

不是为了装腔作势;如果你不擅长 JavaScript,那就准备好奋斗吧。

【讨论】:

谢谢,这是一个很好的答案,处理 z-index 和删除 flash(我遇到了问题),以及我一开始没有意识到我需要的 iframe。我看到你也使用内联 css,这是我遇到的其他问题。【参考方案2】:

在最基本的层面上,它将使用createElement 创建要插入页面的元素,并使用appendChildinsertBefore 将它们插入页面。

【讨论】:

【参考方案3】:

您可以使用一个简单的书签添加一个

所以小书签看起来像:

javascript:code-to-add-script-tag-and-init-the-script;

外部脚本将包括:

向 DOM 添加元素的能力 能够将该元素的 innerhtml 更新为您要为用户显示的标记 处理 AJAX 表单处理

窗口效果可以通过CSS定位实现。

至于这个特定任务的完整资源,你很幸运能找到任何东西。但是看看更小、更独立的部分,你会发现很多资源。查看有关模式窗口、向 DOM 添加元素和 AJAX 处理的信息。

【讨论】:

以上是关于如何使用书签在任何网站的页面中显示表单(如 Google Reader 中的 Note)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mac 全屏显示网页,且无地址栏,书签栏,任何栏遮挡

如何让我的网站在 Firefox 的书签工具栏中显示一个网站图标?

如何优雅地使用Chrome调试页面

让iOS的Safari书签能够显示真正的网站图标

C#导出数据—使用Word模板

如何使用 PHP 动态生成 HTML 页面?