标签: tampermonkey

在安装时在Greasemonkey脚本中存储用户登录/密码输入

我正在做一个Greasemonkey脚本,它通过REST API与Redmine票证管理器进行通信.由于用户需要登录才能从Redmine获取数据,我需要一种方法在脚本安装时询问用户的凭据并将其保存到脚本中.

这可以在不要求用户直接在脚本中编辑值的情况下实现吗?

编辑:
由于已经有了这个问题的答案,我将验证下面给出的答案,因为它是一个非常好的框架.

javascript greasemonkey tampermonkey

12
推荐指数
1
解决办法
3355
查看次数

加载特定网站时自动运行JavaScript代码

我编写了脚本来过滤掉作者在编程论坛中的帖子和帖子.

但是您需要将代码分别发布到Web控制台中.

我想知道是否有可能,如果是这样的话(使用firefox或chrome)如何设置浏览器以在加载特定网站时运行特定脚本?是否可以作为扩展或插件?

javascript browser greasemonkey userscripts tampermonkey

12
推荐指数
1
解决办法
2万
查看次数

$未定义Javascript

我正在编写一段当前在tampermonkey的代码,我无法理解为什么我在谷歌浏览器的控制台中出现这个错误,"执行脚本'PalaceBOT'失败!$未定义",我有另一个脚本,使用相同的主体,我没有遇到这些问题.

脚本:

// ==UserScript==
// @name         SupremeBOT
// @namespace
// @version      0.1
// @description
// @author       @alfiefogg_
// @match        http://www.supremenewyork.com/shop/*
// @exclude      http://wwww.supremenewyork.com/shop/cart
// @require      https://gist.github.com/raw/2625891/waitForKeyElements.js
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
// @grant        none
// ==/UserScript==
var mySize = "large"; //Change to appropriate size
var productSort = "accessories"; //Change to appropriate size
(function() {
    var articles = $(".product-grid-item clearfix");
    if(productSort != "all"){
        for(var i = 0; i < articles.length;i++)
        {
            var category = $(articles[i]).find("a").attr("href");
            if(category.indexOf(productSort) == -1){
                articles[i].remove();
                document.getElementsByClassName("product-grid-item clearfix")[4].click();
            }
        } …
Run Code Online (Sandbox Code Playgroud)

javascript tampermonkey

12
推荐指数
3
解决办法
8974
查看次数

Tampermonkey覆盖JIRA快捷方式

我有一个tampermonkey脚本,它根据文本的颜色为JIRA评论着色.着色确实按预期工作.但是JIRA问题的所有按键事件都被停用了.

在脚本之前,我可以按下.以激活操作菜单或按m添加注释等.

脚本后没有任何作用.

信息:当我在Chrome的Snippet Windows中运行脚本时,一切都很好 - 所有快捷方式仍然有效并且着色已经发生.这让我假设Tampermonkey在JIRA中覆盖或取消绑定键事件.

有人知道如何避免这种情况吗?

脚本

    // ==UserScript==
// @name         JiraCommentColors
// @namespace    com.company.tamperscripts
// @version      0.2
// @description  colorize comments in JIRA made by awesome xetra11
// @author       xetra11
// @match        https://jira.company.com/browse/*
// @grant        none
// @require http://code.jquery.com/jquery-1.12.4.min.js
// ==/UserScript==


(function() {
    var opacity = '0.3';
    var borderStyle = '1px solid black';
    var commentSelector = "div[id*='comment']";
    var zwischenstandSelector = 'a[name=Zwischenstand]';
    var fragenSelector = 'a[name=Frage]';
    var wartenSelector = 'a[name=Warten]';
    var …
Run Code Online (Sandbox Code Playgroud)

javascript jira tampermonkey

11
推荐指数
1
解决办法
537
查看次数

使用 javascript (Tampermonkey 脚本)在 React 输入中输入文本?

我正在尝试制作一个 Tampermonkey 脚本,它会自动将文本输入到某些表单输入字段中。

通常,您只需执行以下操作即可:

myElement.value = "my new text"
Run Code Online (Sandbox Code Playgroud)

问题是,这个表单正在使用 React,我无法直接更改该值,因为它没有设置 React 状态。我如何将所需的数据输入到我的 Tampermonkey 脚本中的这些 React 组件中?

javascript tampermonkey reactjs

11
推荐指数
2
解决办法
4532
查看次数

需要jQuery到Tampermonkey脚本和控制台中的安全变量

通常我使用了以下代码片段,这通常有效:

(function () {
    function main() {
        //...script body...
    }

    var OGloboCSS = { // var could be named anything, appropriate to the page
        addJQuery: function (callback) {
            var script = document.createElement("script");
            script.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js");
            script.addEventListener('load', function () {
                var script = document.createElement("script");
                script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
                document.body.appendChild(script);
            }, false);
            document.body.appendChild(script);
        }
    };

    OGloboCSS.addJQuery(main);

})();
Run Code Online (Sandbox Code Playgroud)

但偶尔我会在https://steamcommunity.com上收到类似这样的错误:

拒绝加载脚本' https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js ',因为它违反了以下内容安全策略指令:"script-src'unsafe-eval ''self''unsafe-inline''unsafe-eval'https: //steamcommunity-a.akamaihd.net/ https://api.steampowered.com/ http://www.google-analytics.com https:/ /ssl.google-analytics.com https://www.google.com https://www.gstatic.com https://apis.google.com ".

解决方案基本上是,您必须使用TamperMonkey的@require头指令,如下所示:

// @require …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-chrome tampermonkey

10
推荐指数
2
解决办法
3596
查看次数

如何在Firefox 57+上将所有Greasemonkey用户脚本传输到Tampermonkey

在阅读之后,Greasemonkey建议用户安装Tampermonkey或Violentmonkey.

我已经安装了Tampermonkey,现在我正在尝试将所有我的Greasemonkey 3.x脚本转移到Tampermonkey上打开,但我找不到它的位置,甚至无法找到它.

我已经阅读了这个问题,说明它在Chrome上的位置和方式,但它在Firefox 57+上的位置是什么?我该如何转让?

PS:我希望我不需要更新我的每个用户脚本.

greasemonkey tampermonkey firefox-57+ greasemonkey-4

10
推荐指数
2
解决办法
1万
查看次数

用户脚本应该运行一次,而不是多次

// ==UserScript==
// @name         Test
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://myanimelist.net/*
// @require http://code.jquery.com/jquery-3.4.1.slim.min.js
// @grant        none
// ==/UserScript==
var index = 0;
(function() {
    'use strict';
    $(document).ready(function () {
        console.log(index);
        index++;
        setTimeout(() => {  console.log(index); }, 2000);
    });
})();
Run Code Online (Sandbox Code Playgroud)

所以你可以看到这段代码应该在控制台中返回:0然后1,但结果不同,实际上脚本运行了多次。

我唯一的线索是来自有问题的网站,有什么想法吗?

例外:(低代表图像 1)

实际:(低代表图像 2)

javascript userscripts tampermonkey

10
推荐指数
1
解决办法
2426
查看次数

indexOf在Switch中

我有一个基于Javascript的机器人用于Xat聊天室,它也可以充当AI.我最近决定重做它的AI部分,因为它成为一个绝对庞大的else if声明链,变得几乎不可能使用.

我做了一些研究,并提出了如何处理响应的新想法.我先给你代码段:

function msgSwitch(id,msgRes) {
var botResponse = [];

switch (msgRes) {
  case (msgRes.indexOf("hi") !=-1):
    botResponse.push("HELLO. ");
  case (msgRes.indexOf("how are you") !=-1):
    botResponse.push("I AM FINE. ")
  case (msgRes.indexOf("do you like pie") !=-1):
    botResponse.push("I CAN'T EAT. THANKS, ASSHAT. ")
  default:
    respond (botResponse);
    spamCount(id);
    break;
}

}
Run Code Online (Sandbox Code Playgroud)

这里的想法是检查msgRes(用户的输入)并查看它匹配的案例数量.然后对于每个匹配,它将push响应到botResponse数组中,然后在结束时,它将回复该数组中的所有消息.

用户信息: Hi! How are you?

msgRes: hi how are you

机器人比赛:

hi>推HELLO.送到阵列

how are you>推I AM FINE.送到阵列

机器人回应: …

javascript switch-statement tampermonkey

9
推荐指数
2
解决办法
1万
查看次数

Tampermonkey脚本在页面加载之前运行

我需要隐藏html页面中的一个部分:

<h1 data-ng-show="!menuPinned &amp;&amp; !isSaaS" class="logo floatLeft" aria-hidden="false"><span>XXX&nbsp;</span><span style="font-weight: bold;">XXX&nbsp;</span><span>XXXXX</span></h1>
Run Code Online (Sandbox Code Playgroud)

以下代码在Chrome dev中正常运行.工具

var ibmlogo = document.querySelectorAll('h1.logo.floatLeft');
ibmlogo[1].remove();
Run Code Online (Sandbox Code Playgroud)

但是当我在脚本处于活动状态时加载页面时,部分(h1)将不会消失.我相信这是因为当脚本运行时,DOM尚未完成加载,因此脚本无法找到选择器.

我尝试了很多不同的东西(例如window.onLoad),但我的脚本仍然无效.最后一次尝试(失败)如下:

var logo = document.querySelectorAll('h1.logo.floatLeft');
logo.onload = function() {removeLogo()};

function removeLogo(){
    console.log("### logo array lenght: " + logo.length);
    logo[1].remove();
};
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢Giovanni

html javascript tampermonkey

9
推荐指数
1
解决办法
9912
查看次数