标签: userscripts

寻找Greasemonkey Scriptwriting基础/教程

我一直在网上搜索几天,试图找出如何编写自己的脚本,比"Hello World"脚本更复杂.

我在很大程度上理解如何使用firebug找到特定元素(我有Firefox).我理解元数据以及如何做到这一切.

然而,我不明白我应该如何在页面中得到任何我想要的东西.无论是Facebook或其他网站的链接或标签.

任何人都可以帮我获得一个完整的教程/指南,这个教程/指南是最新的,易于理解的全部编剧初学者?

firefox greasemonkey userscripts

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

使用Chrome的用户脚本劫持变量

我正在尝试使用用户脚本更改页面中的变量.我知道在源代码中有一个变量

var smilies = false;
Run Code Online (Sandbox Code Playgroud)

从理论上讲,我应该能够改变它:

unsafeWindow.smilies = true;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.当我试图警告或将变量记录到控制台而没有劫持时,我得到它是未定义的.

alert(unsafeWindow.smilies); // undefined !!!
Run Code Online (Sandbox Code Playgroud)

编辑:如果它改变了什么,我正在使用Chrome ...

http://code.google.com/chrome/extensions/content_scripts.html说:

内容脚本在称为孤立世界的特殊环境中执行.他们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数.它将每个内容脚本视为在其运行的页面上没有执行其他JavaScript.

这是关于Chrome扩展,但我猜这与用户脚本也是一样的?

谢谢你,Rob W.所以需要它的人的工作代码:

var scriptText = "smilies = true;";
var rwscript = document.createElement("script");
rwscript.type = "text/javascript";
rwscript.textContent = scriptText;
document.documentElement.appendChild(rwscript);
rwscript.parentNode.removeChild(rwscript);
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome userscripts content-script

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

如何用Greasemonkey的用户脚本替换JSON字符串中的文本

我想在Firefox中为Greasemonkey创建一个用户脚本而不使用jQuery,它可以在加载网站页面时用新文本替换旧文本.

HTML代码:

..

window.app = profileBuilder({
..
    "page": {
        "btn": {
            "eye": "blue",
            "favorite_color": "blue",
            "gender": "male",
        },
    },
..
});

..
Run Code Online (Sandbox Code Playgroud)

用"红色"代替"喜欢"颜色的"绿色","蓝色",用"女性"代替"男性".

当页面将被加载时,我想看到,例如绿色(不是蓝色)的眼睛和女性性别(不是男性).

我想我需要使用下一个功能:

GM_getValue()
GM_setValue()
JSON.parse()
JSON.stringify()
Run Code Online (Sandbox Code Playgroud)

PS:代码JSON直接在页面中而不在文件中(../code.json)

用户代码:

// ==UserScript==
// @name        nemrod Test
// @namespace   nemrod
// @include     http*://mywebsite.com/*
// @version     1
// ==/UserScript==
var json = {"page": {"btn": {"eye": "blue","favorite_color": "blue","gender": "male",},},};
var stringified = JSON.stringify(json);
stringified = stringified.replace(/"eye": "blue"/gm, '"eye": "green"');
stringified = stringified.replace(/"favorite_color": "blue"/gm, '"favorite_color": "red"');
var jsonObject = JSON.parse(stringified);
Run Code Online (Sandbox Code Playgroud)

它不起作用

有人可以帮助使用正确的代码吗?

html javascript json replace userscripts

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

如何阻止浏览器预加载<video>标签?

我使用JavaScript为Chrome编写了一个用户脚本扩展程序,以防止在页面加载时自动下载视频和音频标记

这是代码:

var videoTags = document.getElementsByTagName("Video");
var i;
for(i=0; i<videoTags.length; i++)
{
    videoTags[i].setAttribute("preload", "none");
    videoTags[i].removeAttribute("autoplay");
}

var audioTags = document.getElementsByTagName("audio");
var i;
for(i=0; i<audioTags.length; i++)
{
    audioTags[i].setAttribute("preload", "none");
    audioTags[i].removeAttribute("autoplay");
}
Run Code Online (Sandbox Code Playgroud)

这是manifest.json文件:

   {
      "content_scripts": [ {
      "exclude_globs": [  ],
      "exclude_matches": [  ],
      "include_globs": [ "*" ],
      "js": [ "script.js" ],
      "matches": [ "http://*/*", "https://*/*" ],
      "run_at": "document_start"
   } ],
      "converted_from_user_script": true,
      "description": "",
      "key": "an2xaeZJluPfnpmcsHPXI4aajQPL1cBm5C2kKjaQwXA=",
      "name": "test.user.js",
      "version": "1.0"
  }
Run Code Online (Sandbox Code Playgroud)

问题是我的脚本片刻后运行,直到那时浏览器(Chrome)下载了一部分视频/音频文件.

javascript userscripts

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

通过userscript阅读websocket通信

如何使用greasemonkey脚本/ Chrome的用户脚本拦截正在运行的websocket通信?

我的目标是为浏览器内游戏提供额外的统计信息

javascript userscripts websocket

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

用户可以删除给定域中的cookie吗?

Greasemonkey可以删除给定域中的cookie吗?如果是这样,怎么样?

javascript cookies firefox greasemonkey userscripts

8
推荐指数
1
解决办法
7385
查看次数

插入动态创建的DOM节点的处理程序

我喜欢在我不拥有或控制的页面上运行自定义脚本.很多时候,这些页面都动态创建了我想要应用函数的内容.

这可能吗?如果是这样,我该怎么做?理想情况下,我正在寻找一些实时jQuery的live方法,除了它不是绑定一个事件,就像click它更像是在DOM中加载元素时发生的事件. load事件对某些元素有效,但我不认为...

对于此问题,假设您无法查看或更改插入DOM节点的代码.我想要一种可以在用户脚本或书签中使用的技术,可以跨多个不相关的站点使用.

编辑:我正在寻找在我的反转颜色bookmarklet上使用的东西:JavaScript:在页面的所有元素上反转颜色

javascript jquery dom bookmarklet userscripts

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

Tampermonkey 脚本不会自动更新

在我的脚本顶部,我有以下内容:

// ==UserScript==
// @name         Test script
// @description  testing auto-update
// @namespace    http://tampermonkey.net/
// @author       newbie
// @version      1.0.0
// @updateURL    https://github.com/mygithubaccount/test/raw/master/test.user.js
// @downloadURL  https://github.com/mygithubaccount/test/raw/master/test.user.js
// @match        http://awebsite.com/*
// @run-at       document-end
// @grant        GM_getResourceText
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @grant        GM_getResourceURL
// @grant        GM_xmlhttpRequest
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud)

请注意,这些值仅作为示例。

当我对脚本进行更改并增加 github 上的版本号,然后将更改推送到 master 时,它会更新原始脚本链接,但是我没有从 Tampermonkey 获得自动更新,就像在弹出窗口中说脚本有更新一样。只有当我手动转到链接并重新安装脚本以更新它时,它才会更新。

如何使用弹出窗口进行此自动更新?

userscripts tampermonkey

8
推荐指数
1
解决办法
4033
查看次数

如何使用 FF 57+(带有 WebExtensions)调试 Greasemonkey/Tampermonkey 用户脚本?

我在浏览器调试器的打开文件...框中找不到我的用户脚本(名称定义在// @name)。

似乎Annarfych 的回答Hjulle如何使用 Firebug 扩展调试 Greasemonkey 脚本的回答不要再工作了。

由于迈克尔Greasemonkey 脚本文件夹丢失的发现

显然 GreaseMonkey 不再gm_scripts为 Firefox存储用户脚本。[...] 脚本显然存储在 SQLite 数据库文件中。

debugging greasemonkey userscripts tampermonkey firefox-57+

8
推荐指数
1
解决办法
540
查看次数

使用用户脚本修改 React 组件

简洁版本

当我无法访问原始源代码时,如何使用用户脚本(例如 Tampermonkey 注入的代码)修改 React 组件而不破坏应用程序?

加长版

直接修改 React 组件的 DOM 可能会破坏应用程序,因为协调算法可能会因手动 DOM 更改而感到困惑。因此,我想修改我的用户脚本中的 React 组件,以便 React 可以不受阻碍地继续渲染。

在一个简单的设置中,React 会发现全局命名空间中的组件,我们可以轻松修改组件(请参阅此小提琴以获取工作示例):

oldComponent = Component
function Component(props) {
  // modify the props to change the appearance of the component
  return oldComponent(modifiedProps);
}
Run Code Online (Sandbox Code Playgroud)

然而,部署应用程序时情况会更加复杂,因为组件通常使用webpack进行捆绑。我如何能够在组件已捆绑的应用程序中重现上面的示例?

javascript userscripts tampermonkey reactjs webpack

8
推荐指数
0
解决办法
2031
查看次数