将 favicon 添加到 javascript Bookmarklet(使用 window.open)

2024-01-27

我有一个小书签,它启动一个 window.open javascript 函数,用我的小书签打开一个小窗口——一个用于在任何访问过的站点和我的服务器之间进行通信的外部功能。我想要一个favicon当书签添加到书签工具栏时显示。我意识到书签是 javascript,没有与其绑定的域,因此实现这个目标要么很困难,要么不可能。

我对问题的理解:

网站图标很容易理解,是 HTML 文档头部的链接。当通过引用为实际站点添加书签时,浏览器可以提取此内容。但是,正如您所看到的,我的书签是通过 javascript 启动代码运行的,其中不存在 HTML,因此没有指向favicon。不过我还没有准备好放弃,我觉得可以注射一些药物......

截至目前,小书签启动代码如下所示:

当前脚本 - 小书签,无图标(并非所有代码都使用换行符格式化 - 不适用于所有浏览器,通常是一行)

javascript:void(window.open(
        'http://mydomain.com/bookmarklet/form?u='
        +encodeURIComponent(location.href)+
        't='+encodeURIComponent(document.title),
        'test','status=0,toolbar=0,location=0,menubar=0,
         resizable=false,scrollbars=false,height=379,width=379'
        ));

我发现的最接近解决方案如下,但它不会打开新窗口 - 只是创建一个新选项卡,其中 html 作为页面:

工作图标,没有书签窗口

javascript:'<!DOCTYPE html>
    <html><head>
    <title>Hello World</title>
    <link rel="icon" type="image/png" href="http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png" />
    </head>
    <body>Hello World</body>
    </html>';

我尝试过两者的组合,但似乎没有使用该图标。我很想知道是否有人能看到一种解决方法。我认为这是可能的,我只是认为它的设置不正确,因为我一直在尝试。

我的两者的混合体——书签但没有网站图标

javascript:'<!DOCTYPE html>
    <html><head>
    <title>Hello World</title>
    <link rel="icon" type="image/png" href="http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png" />
    </head><body>Hello World</body></html>';
    window.open('http://mydomain.com/bookmarklet/form?u='
    +encodeURIComponent(location.href)+
    '&t='+encodeURIComponent(document.title),
    'test',
    'status=0,toolbar=0,location=0,menubar=0,resizable=false,
     scrollbars=false,height=379,width=379').void(0);

我所做的是在触发 window.open() 之前使用 html 结构,这成功地在新窗口中打开了我的书签,但没有显示书签图标的图标。


逻辑解:

我对此的想法是让书签指向一个页面,该页面只是一个带有网站图标链接和启动脚本的 HTML 文件。<head>。但是,我不希望在带有空白 HTML 文件的新选项卡中打开该文件,然后启动弹出窗口..解决方法..?


存在类似的问题,但我似乎没有找到我正在寻找的答案:

当书签拖到工具栏时如何设置网站图标/图标? https://stackoverflow.com/questions/521040/how-to-have-favicon-icon-set-when-bookmarklet-dragged-to-toolbar

工作 javascript favicon 的来源(但是没有书签):

http://www.tapper-ware.net/blog/?p=97 http://www.tapper-ware.net/blog/?p=97

我对您目前对此的了解/想法感兴趣


我试了又重试,我的第一个结论是:“这是不可能的(至少在 Ubuntu 11.04 上的 FF4 中是不可能的)”。您需要(我猜)为您的网站访问者提供一个简单的解决方案(拖放、一键添加书签...)。

我找到了一个解决方法,它完成了它的工作,但它有点问题(也许有人可以帮助修复它)。
PROS:

  • 将图标添加到书签
  • 它使用 windows.open
  • 不会留下空白页

CONS:

  • 它重新加载当前页面(而不是留下页面)
  • 无法让 Firefox POP-up 拦截器允许“javascript:”生成的 HTML 页面加载 POP-ups,因此您每次都需要点击“允许”

这是代码:

<a href="javascript:'&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;link rel=&quot;icon&quot; type=&quot;image/png&quot; href=&quot;http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png&quot; /&gt;&lt;/head&gt;&lt;body onLoad=&quot;window.open(\'http://example.com',\'test\',\'status=0,toolbar=0,location=0,menubar=0,resizable=false,scrollbars=false,height=379,width=379\');setTimeout(\'history.back(-1);\',100);&quot;&gt;&lt;/body&gt;&lt;/html&gt;';">Bookmarklet</a>

这是您放置在页面上的链接,用户需要将此链接拖放到书签栏(您可以使用类似添加书签脚本 http://www.dynamicsitesolutions.com/javascript/add-bookmark-script/(只需单击 1 次即可将其添加为书签),在用户至少单击一次之前,书签没有图标。

那么它应该如何工作:
1. 将用户重定向到小书签生成的 HTML 页面(这使得ICON可能)
2. onLoad 使用“打开您需要的窗口”打开窗口"
3.使用“重定向页面”历史.返回(-1)"

理论上,一切都发生得如此之快,以至于用户看不到新页面,只是当前页面正在重新加载,并且出现了一个新窗口。

问题:
1.我对history.back使用setTimeout,因为window.open被Firefox阻止,所以我需要每次都单击允许(如果有人可以解决这个问题......我们有机会使用它,进一步开发它:))

我知道这不是一个可靠的解决方案,但这是迄今为止我得到的唯一解决方案。

希望这有所帮助。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 favicon 添加到 javascript Bookmarklet(使用 window.open) 的相关文章

随机推荐

  • 仅限水平滚动!

    我有一个包含水平菜单的菜单 菜单由无序列表组成 我希望每当菜单超出宽度时 div 都会获得水平滚动条 div 我尝试使用这些 CSS 定义 div position absolute width 380px overflow auto ov
  • 输入“用户|未定义”不可分配给类型“用户”

    用户控制器 import User from user export class UserController public static async getuser ctx BaseContext const userRepository
  • Safari 中的 CSS 过渡变换 z-index 冲突(适用于 Chrome / FF)

    我正在尝试使用 CSS 过渡和旋转效果来显示名片 我在 Chrome 和 FF 中一切正常 但在 Safari 中它扭曲了 div 我尝试应用以下属性但无济于事 transform translateZ 0px transform styl
  • d3 力定向图中的缩放和刷动

    我在执行缩放时让 D3 执行正确的刷牙时遇到问题 我在这里创建了一个 jsFiddlehttp jsfiddle net Gwp25 2 http jsfiddle net Gwp25 2 用我在其他地方找到的一些虚拟数据显示网络 接下来的
  • 以编程方式将音乐添加到 iOS

    假设我想创建一个从互联网下载音乐文件的 iOS 应用程序 那么是否可以将此音乐文件放在音乐库中以便我可以播放它 这是不可能的 将音乐添加到资料库的唯一方法是通过 iTunes 或 iTunes Store 应用程序 即使您确实找到了一种方法
  • 通过使用 React 按钮设置状态来循环遍历数组中的对象

    所以我有一些想要循环浏览的数据 const data names name Jordan additional data name Holly additional data name Sean additional data Using
  • 使用 PrintDocument 打印多页

    我正在尝试打印发票 发票应该能够在多页上打印 但这就是问题出现的地方 我可以在单页上完美地打印发票 但是一旦发票不适合在单页上打印 打印作业就会退出第一页 这是我正在使用的代码 artikelen 是文章列表 List 我读过几个类似的例子
  • 生产环境中的 Rails 服务器如何工作?

    我想知道 总的来说 它更像 PHP 它加载到内存中 执行 然后在每次连接时终止 或者像 Node js 单个实例保留在内存中并接受所有请求 从技术上讲是后者 但根据应用程序服务器 可以将其设置为look喜欢前者 因为前者更容易管理 Phus
  • 如何在 Dropwizard(泽西岛)中记录 JSON 响应

    我想知道如何配置 Dropwizard 来记录 JSON 响应 在 Service 子类 例如 HelloWorldService 的 run 方法中 添加 environment setJerseyProperty ResourceCon
  • pthread的调度方法?

    由于没有显式调度 pthread 被调度为由内核以随机方式运行 pthread 库中是否定义了相同的调度方法 例如优先级 线程的优先级被指定为增量 该增量被添加到进程的优先级上 更改进程的优先级会影响该进程中所有线程的优先级 线程的默认优先
  • 如何向 DetailDisclosureButton 添加标签文本?

    我正在使用 iOS Swift 2 0 应用程序 我一生都无法弄清楚如何将文本设置在右侧UITableViewCell就在披露指示符 V 形之前 除了创建自定义cell accessoryView 这是 设置应用程序 的屏幕截图 它正是我想
  • PHP 命令,未找到

    我尝试安装composer通过 PHP 命令 如 getcomposer 站点中所述 但 bash 抛出错误 bash php command not found 所以我在谷歌上搜索了一下 我得到了一些答案 1 添加php二进制文件路径 P
  • C# 中灵活的日志记录接口设计

    我想编写自己的日志记录类 用 C 编写 它实现一个标准接口 我可以从代码的任何部分调用该接口 我的想法是让多个 Log 类实现 Logger 接口 每个类都有其特定的日志目的地 例如 FileLogger 将实现记录到文件 TextBox
  • 从 scala 访问公共静态 java 方法

    我正在尝试在这里使用 Java facebook 库http restfb com publishing http restfb com publishing在 scala play2 应用程序中 但是当尝试调用静态时with下面的方法 它
  • 我该如何修复 AttributeError: 'dict_values' 对象没有属性 'count'?

    这是我的code http pastebin com tzPpqE97文本文件是here http www dropbox com s 2bklv7p4ylq8wur web graph zip dl 0http import networ
  • IBM MQ v8 和 Glassfish 本地设置端口配置问题

    给出以下本地设置 IBM WebSphere MQ Advanced for Developers V8 0 帕亚拉4 1 2 172 我想通过默认端口 1414 以外的 JMS 连接到本地队列管理器 尽管我向连接工厂添加了几个属性来配置端
  • 如何将对象注入到 WCF 服务中

    如果我有这样的服务定义 实现 using System using System ServiceModel namespace aspace service ServiceContract Namespace http aspace ser
  • Web API 方法返回 JSON 数据

    我正在使用 ASP net Web API 2 0 并且希望我的方法仅以 JSON 格式返回数据 请建议对 API 控制器类中的以下方法进行代码更改 public async Task
  • Excel - 计算与 ID 匹配的唯一值,针对 100,000 多个案例进行了优化

    参考下面的 Excel 屏幕截图 我正在寻找一个公式解决方案 用于计算 A 列中每个 ID 号的 B 列 颜色 中唯一值的数量 我已将所需结果归入 C 列 因此 例如 ID 1 A2 只有一种唯一颜色 灰色 B2 这将在 C2 中返回 1
  • 将 favicon 添加到 javascript Bookmarklet(使用 window.open)

    我有一个小书签 它启动一个 window open javascript 函数 用我的小书签打开一个小窗口 一个用于在任何访问过的站点和我的服务器之间进行通信的外部功能 我想要一个favicon当书签添加到书签工具栏时显示 我意识到书签是