【问题标题】:How to create a toolbar button for a Chrome Tampermonkey user script?如何为 Chrome Tampermonkey 用户脚本创建工具栏按钮?
【发布时间】:2014-11-03 04:52:21
【问题描述】:

我编写了一个用户脚本,我想在调用它时运行它(不是每次加载匹配的网页时)。理想情况下,我想创建一个工具栏按钮来启动这个脚本。如何做到这一点?

PS:我需要它与网页脚本在相同的上下文中运行,并能够调用其中嵌入的函数。

【问题讨论】:

  • 我不知道为什么投反对票,但我高度怀疑它无法做到。您将需要编写自己的扩展程序 - 并且很有可能到达页面的上下文。
  • “为什么不投票”:接受的答案以 “我不知道你在说什么工具栏”开头...... IMO,只是有点示例代码或屏幕截图会阻止这种情况。也就是说,我从 derjanb 的回答中学到了一些新东西,所以谢谢你!

标签: google-chrome google-chrome-extension userscripts tampermonkey


【解决方案1】:

我不知道你在说什么工具栏,但是可以向Tampermonkey's action menu 添加一个菜单命令。

由于您的脚本应该能够在任何页面上运行,因此您需要@include所有页面,这可能会降低包含大量 iframe 的页面的速度。

只有当菜单命令被点击时,这个脚本才会执行主函数(带有警告语句)。

// ==UserScript==
// @name       Run only on click
// @namespace  http://tampermonkey.net/
// @version    0.1
// @description  Run only on click
// @include    /https?:\/\/*/
// @copyright  2012+, You
// @grant      unsafeWindow
// @grant      GM_registerMenuCommand
// ==/UserScript==

GM_registerMenuCommand('Run this now', function() { 
    alert("Put script's main function here");
}, 'r');

可以通过两种方式访问​​页面功能:

function main () {
  window.function_at_the_page();
}

var script = document.createElement('script');
script.appendChild(document.createTextNode('('+ main +')();'));
(document.body || document.head || document.documentElement).appendChild(script);

或者只是:

unsafeWindow.function_at_the_page();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多