【问题标题】:How to get a QR code to open a JavaScript bookmarklet如何获取二维码以打开 JavaScript 小书签
【发布时间】:2014-04-21 18:50:47
【问题描述】:

我有一个 JavaScript 小书签,当您打开它时,它会运行一个 mailto 脚本,它会在正文中放置一个时间戳。 QR 码会完美打开我的mailto 链接,但我需要它有一个时间戳,所以我使用这个:

javascript:location.href='mailto:example@gmail.com?SUBJECT=Data&BODY=Time:'+(new%20Date().getTime())

它作为书签在我的 iPhone 或 iPad 上运行,但我想制作一个 QR 码来打开 Safari 中的 JavaScript,而不是打开 URL。

问题在于 QR 码生成器,它们都会自动将 http:// 放在 URL 的开头,这会导致脚本关闭。我可以将其作为纯文本发送,但无法在 Safari 中打开。

关于如何做到这一点的任何想法?我有几个想法:

  • 任何人都知道能够自行运行脚本的足够智能的 QR 阅读器应用程序吗?

  • 任何人都知道有一个愚蠢的 QR 阅读器,它不会在链接前面放 http://,但仍会尝试在 Safari 中打开它?

  • 使用自动运行脚本的 URL,但这在没有互联网连接的情况下无法运行,这意味着用户可以轻松返回网站

  • 构建我自己的应用,但我完全不知道该怎么做

提前致谢。

【问题讨论】:

    标签: javascript ios safari qr-code bookmarklet


    【解决方案1】:

    我会使用一个普通的 url,它指向一个只运行那个简单脚本的网页。要启用离线功能,只需声明一个 HTML5 离线应用程序清单!

    这样你只需要在你第一次使用二维码时上网。看起来你对设备有很好的控制,所以这应该不是问题。至少比自定义 QR 应用少!

    对于不同的二维码,只需在 url 中使用主题标签 #,其余的在 JS 中完成。所以它始终是同一个网页,并且可以离线加载!

    【讨论】:

    • 使用离线清单是一个非常有用的建议!你是什​​么意思使用主题标签并在 javascript 中完成其余部分?
    • @crclayton:嗯,你可以使用http://mydomain.com/qrv1/#qrtype=1&mail=mymail@mydomain.com 之类的链接。然后你可以根据 qrtype 执行不同的 JS 代码。但由于mydomain.com/qrv1被缓存,客户端不必为每个qrtype重新下载脚本。
    【解决方案2】:

    创建一个前面没有 http:// 的二维码很容易。在这种情况下,我使用了我的PHP QR Code Generator。大多数体面的人都会工作。

    这是二维码中的 JavaScript。

    我找不到可以在扫描后执行代码的单个 QR 扫描仪。

    我认为最好的办法是......

    1. 将您的二维码指向一个面向公众的网页。
    2. 将 JavaScript 放在页面上。
    3. 加载页面后让 JS 运行。
    4. 手机应自动打开其电子邮件客户端。

    【讨论】:

    • 是的,那是我的下一步。我已经尝试过了,它有效,只是需要花费不友好的时间,而且您还需要连接到互联网,而仅使用 javascript,您可以打开客户端并发送电子邮件,它只是不会'直到您连接到互联网后才会交付。
    • 能动态生成代码吗?使用 JavaScript 每 5 分钟更新一次?
    • 我不确定你的意思?在哪里更新什么?
    • 如果您在屏幕上显示二维码,您可以每 5 分钟自动更改一次二维码。
    • 哦,我明白了,不,不幸的是它必须打印出来。
    【解决方案3】:

    mailto: 是 URI Scheme (Mailto URI Scheme),因此 QR 码生成器或 QR 码阅读器不应将 http:// 放在前面。

    • 如果添加 http://,则在生成器中使用“纯文本”。对于 QR 码,URL 和文本格式相同,原始数据中不添加任何内容。 Unitag QR Code generator 会让你创建一个 mailto:“URL QR Code”。
    • QR 码阅读器也各不相同,有些人会在识别原始数据中的某种 URL 时尝试添加 http://

    你的问题是javascript:我知道没有QR码阅读器会执行它,我能想到的每个机制都行不通:

    • 直接打开链接(Javascript不会执行)
    • 通过 url-shortener 打开链接(Javascript 也不会执行)

    您需要的是一个 url-shortener,它将“执行 Javascript”或以其他方式注入日期。 这可以通过一些罕见的 url-shorteners 实现,BeeTagg 可以做到这一点 (http://www.beetagg.com/),但 Unitag (https://www.unitaglive.com,但正在开发中)。

    免责声明:我在 Unitag 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多