标签: userscripts

GreaseMonkey - Firefox Web控制台没有显示所有javascript错误

Firefox Web控制台(Ctrl+ Shift+ K)未显示Firefox错误控制台中报告的所有Javascript错误.怎么改变这个?

这很烦人,因为Firefox错误控制台已被弃用,需要在Firefox配置中明确重新启用.

未在Web控制台中显示的错误示例是访问未定义对象的属性.这种异常只会杀死Javascript运行脚本,如果它没有出现在日志中,那么调试非常烦人...

var obj = undefined;
obj['whatever'];
Run Code Online (Sandbox Code Playgroud)

这将在错误控制台中引发错误,但不会在Web控制台中引发错误:

/*
Exception: obj is undefined
@Scratchpad/1:11
*/
Run Code Online (Sandbox Code Playgroud)

请注意,在Web控制台中检查"JS>错误",并在Web控制台配置上启用Chrome调试.

编辑:这似乎只适用于GreaseMonkey用户脚本(也是暂存器).

javascript console firefox greasemonkey userscripts

13
推荐指数
1
解决办法
7516
查看次数

来自Google Chrome中用户脚本的跨源XHR

有没有人有幸从谷歌浏览器的用户脚本执行跨源XHR?请求进入服务器(我可以在日志中看到它们),但readystatechanged事件永远不会被触发.

扩展权限似乎没有成功.JSONP也不是.

google-chrome cross-domain userscripts

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

如何设置Chrome的用户脚本版本号

编辑:导致此问题的错误已得到修复.该@version标签现在工作在稳定的版本.见问题30760


嘿.

我一直想知道如何在Chrome的扩展选项卡中设置为用户脚本显示的版本号

示例图片http://atli.advefir.com/images/chrome_user-script_version.jpeg

到目前为止,明显的方法都失败了:

// ==UserScript==
// @version 1.1.5
// @uso:version 1.1.5
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud)

我知道Greasemonkey for Firefox不使用版本值,但由于Chrome实际上显示的是版本号,我认为可能.

也许这是一个尚未实现的功能?
或者也许它从来没有打算存在,但它存在,因为扩展具有版本号,并且用户脚本当前作为扩展安装?

(我正在使用Linux测试版,版本:4.0.249.43,顺便说一下)

谢谢.

greasemonkey google-chrome version userscripts

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

如何在网页上运行任何内联脚本之前运行用户脚本?

我想为firefox创建一个在页面上的脚本之前运行的greasemonkey类型脚本.Greasemonkey脚本在页面上的脚本之后运行,因此不起作用.我需要这个的原因是因为我想编辑页面上的一个脚本.具体来说,我想删除一个强制页面加载到框架内的脚本,因为框架内的页面打破F5(按F5使页面跳回到首页而不是重新加载当前页面).另外,我不想通过AJAX加载代理页面,也不能切换到chrome/opera.我想也许Jetpack附加组件可以工作,但它似乎只有与greasemonkey使用相同的事件,DOMContentLoaded.有任何想法吗?

firefox greasemonkey userscripts

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

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

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

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

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

javascript browser greasemonkey userscripts tampermonkey

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

可以在IE11中运行userscript

我有一个自定义用户脚本,我使用Tampermonkey/Greasemonkey在Chrome和Firefox中运行.

在IE11中有没有办法使用这个脚本?或者是否有任何IE11的插件可以执行Tampermonkey/Greasemonkey的操作?

javascript internet-explorer userscripts

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

在另一个框中按Enter键时,防止按钮上的onclick事件触发

我需要#wmd-button-bar在SE编辑器中有一个用户输入字段以及一个按钮.用户可以在输入字段中输入一些数据,然后按下按钮来处理该数据.我正在使用用户脚本来实现这一目标.我创建了一个单独的MVCE,这是它的Tampermonkey/Greasemonkey的直接安装链接.

要重现此问题,请安装userscript.重新加载此页面,然后单击"编辑".您会注意到一个带有按钮的新空白输入框.将"编辑摘要"框空白,将其留空,然后按Enter键.现在,您的插入符号将重点放在新的空白输入框上,而不是提交答案框.

如果您在"问题标题"框中按Enter键也会发生相同的情况.

console.log消息中,您会注意到MouseClick按钮上有一个事件!这不是预期的行为.事实上,这怎么可能呢?我们只是在编辑摘要框中按Enter键,甚至没有触及新的空白输入或其按钮.它是如何注册鼠标点击的?

如何解决这个问题?

注:e.preventDefault();按钮内部onclick处理程序是必要的.否则,当用户按下按钮来处理他们的输入数据时,答案框会提交自己.


用户名代码:

function createModal(buttonBar){
    var div = document.createElement("div"),
        input = document.createElement("input"),
        btn = document.createElement("button");

    div.id = "box";

    input.type = "text";

    btn.innerHTML = "Button";
    btn.onclick = function(e){
        e.preventDefault();
        console.log("I was called");
        input.focus();
        console.dir(e);
        console.trace();
    };

    div.appendChild(input);
    div.appendChild(btn);

    return div;
}

setInterval(function () {
    var cont = document.querySelector(".wmd-container:not(.processed)"), ul, buttonBar, div;

    if (cont && (ul = cont.querySelector(".wmd-button-bar ul"))) {
        cont.classList.add("processed");

        buttonBar = cont.querySelector("div[id^=wmd-button-bar]"); …
Run Code Online (Sandbox Code Playgroud)

html javascript google-chrome userscripts

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

在Safari扩展中使用jQuery

我正在尝试制作一个简单的Safari 5扩展,它只是注入一个自定义的JavaScript.有什么想法我可以在这个自定义脚本中使用jQuery吗?我只知道这是可能的,因为它在WWDC视频中提到过,但我不知道该怎么做.

谢谢

javascript safari jquery userscripts

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

User.prototype的UserScript问题

我正在开发一个UserScript,我认为为Object创建2个Prototype函数会节省更多时间.

Object.prototype.Count = function() {
    var size = 0, key;
    for (key in this) {
        if (this.hasOwnProperty(key)) {
             size++;
        }
    }
    return size;
};
Object.prototype.GetEntry = function(index) {
    var size = 0, key;
    for (key in this) {
        if (this.hasOwnProperty(key)) {
            if (size == index)
                return this[key];
             size++;
        }
    }
    return null;
};
Run Code Online (Sandbox Code Playgroud)

这两个函数在我的调试控制台上完全正常工作,因为我输入它们,我使用它们,但是当我运行我的脚本时,它会让我的控制台出现一些奇怪的错误.

Uncaught TypeError: U[a].exec is not a function
Uncaught TypeError: (ec[b] || []).concat is not a function
Uncaught TypeError: X[g].exec is not a function
Uncaught TypeError: (Qn[t] …
Run Code Online (Sandbox Code Playgroud)

javascript jquery userscripts function-prototypes

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

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

// ==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
查看次数