标签: tampermonkey

如何使用greasemonkey有选择地从网站上删除内容

我试图修改的内容有一系列<div>条目,其中每个<div>条目都是其他条目.这里没有id标签可以提供帮助.我希望脚本做的是检查每个<div>条目的内容并查找一些文本.这将用于确定是否删除/隐藏整个"条目".这可能吗?怎么样?

以下是一个例子.页面中有几个,我想删除/隐藏<div class="foo bar">标签内的文字说"是" 的那些.所以在这个例子中,整个事情将被删除/隐藏.

<div class="entry">

<div class="fooPhoto"><a href="Addfoo.jsp?tid=954102"><img class="person" src="http://static.barfoo.com/images/site/icons/dude.png" border="0" width="24" height="24" onerror="this.src='images/site/icons/dude.png'" title="Photo Unavailable" alt="Photo Unavailable" ></a></div>

<div class="fooAvg">4.7</div>     

<div class="foo bar">Yes</div>

<div class="fooShare">
<a class="shareEmail" href="referral.jsp?sid=882&tid=954102&pgid=3">Share using email</a>
</div>

</div><!-- closes entry -->
Run Code Online (Sandbox Code Playgroud)

html javascript webpage greasemonkey tampermonkey

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

如何在返回响应之前获取AJAX get-request以等待呈现页面?

我正在为此站点(Site1)中的页面编写Greasemonkey脚本.Site1有各种交易和优惠,我的GM脚本旨在执行以下操作:

当访问Site1上的商品时,脚本会查询 Site2以查明该商店是否也列在Site2上.如果是这样,请在Site1上显示Site2的搜索结果.

问题是Site2显示进度条("加载结果"),然后显示结果.因此,我的Ajax请求总是返回空结果,看起来像这样(参见红色框部分):(
点击查看大图)未完成的结果


但是,它实际上应该具有Site2搜索结果的完整内容,如下所示:(
点击查看大图)完成结果


我尝试过同步Ajax请求GM_xmlhttpRequest,但无济于事.

这是Site 2的问题进度条:(
点击查看大图)状态栏


在将响应返回到Site1之前,如何让AJAX请求等待Site2上的搜索完全呈现?

作为参考,我的完整工作脚本代码位于pastebin.com.

这是相关的片段:

$(document).ready(function(){   
var rewardsSiteResults = $('<div class="panel deal-panel rc-lr"></div>').attr('id', "rewardsSiteResults")
        .html("<p>" + progressMessageText + "</p> ").append(spinnerGif);
$(insertSelector).after(rewardsSiteResults);

var addressMap = getAddressOfHotel();
var pinCode = addressMap[pinCodePlaceHolder];
var hotelName = addressMap[hotelNamePlaceHolder];
var queryURL = constructQueryURL(pinCode, hotelName);

$.ajaxSetup({async:true, timeout: 5000});
$.get(queryURL,null, function(response) {
    if(!displayed){
        displayed=true;
        //rewardsSiteResults.html("adfaasddsf");
        var text = $(response).find("#col2");
        $(text).find("script").remove();

        //console.log(text.html())
//          $('<iframe id="someId"/>').appendTo('#rewardsSiteResults')
//          .contents().find('body').append(response);
        rewardsSiteResults.html("<div class='panel deal-panel rc-lr'>" …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery greasemonkey tampermonkey

7
推荐指数
1
解决办法
3056
查看次数

没有提示,将图像保存到硬盘?

我用twitter.有些人的推文包含照片,我想保存它们.

我检查了ifttt,其中twitter不是触发器.因此,ifttt无法帮助我做到这一点.

一个想法可能是使用JavaScript.我使用Firefox并安装了Greasemonkey.我可以写一个在twitter网站上运行的Greasemonkey脚本(JavaScript).点击"转发"链接或我的脚本添加的其他按钮后,我的脚本会检查推文的内容,找到照片的网址,然后将其保存到我的磁盘中.

一个问题是如何保存图像.我搜索了互联网.一些使用win.document.execCommand("SaveAs"),它将显示"另存为"窗口.现在窗口显示,为什么不直接单击图像并选择手动保存?所以我不喜欢这种方法.

有什么建议?

javascript greasemonkey filesystem-access userscripts tampermonkey

7
推荐指数
2
解决办法
5873
查看次数

Tampermonkey忽略了@exclude

我正在使用Tampermonkey 翻译Shopify的仪表板/管理员.

出于安全考虑,Shopify管理员仪表板的某些部分我不想使用Tampermonkey.商家创建的文本(产品,页面,集合,模板......)是Tampermonkey取代的,这是非常危险的.

有两种方法可以解决这个问题:

  1. "Instruct"Tampermonkey不翻译表单内的内容.(这似乎是最好的方法)
  2. 使用该@exclude指令.

我使用了后者,但脚本没有收听@exclude.这是用户脚本:

// ==UserScript==
// @name       Shopify_Admin_Spanish
// @namespace  http://*.myshopify.com/admin
// @version    0.1
// @description  Tu tienda Shopify, por detrás, en español!
// @exclude    https://*.myshopify.com/admin/products
// @exclude    https://*.myshopify.com/admin/collections
// @exclude    https://*.myshopify.com/admin/blogs
// @exclude    https://*.myshopify.com/admin/pages
// @exclude    https://*.myshopify.com/admin/themes
// @match      https://*.myshopify.com/*
// @copyright  microapps.com
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud)

PS.我使用谷歌浏览器进行了所有检查,并且不愿意使用任何其他浏览器.

javascript google-chrome shopify tampermonkey

7
推荐指数
1
解决办法
3114
查看次数

Tampermonkey脚本不更新

我在让脚本自动更新时遇到问题.如果我强制检查更新,那么它就可以很好地获取新版本.但是,我无法在新的更新可用时自动通知我.

我的脚本具有以下元数据:

// ==UserScript==
// @name         PortalScript
// @namespace    PortalScript
// @version      2.1.0.9
// @description  Contains customizations to be applied to the portal
// @author       Tristan Lee
// @match        https://test-support.portal.dev
// @grant        none
// @downloadURL https://rawgit.com/tristanlee85/supportportal/master/supportportal.js
// @updateURL https://rawgit.com/tristanlee85/supportportal/master/supportportal.js
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud)

Tampermonkey设置为每小时检查更新.但是,存储库中的版本可能是2.1.0.10,但自版本更改后数小时后,我从未收到有关更新可用的通知.

我也不认为这@updateURL是必要的,因为@downloadURL指定,但我添加它作为检查,因为只是@downloadURL没有工作.

userscripts tampermonkey

7
推荐指数
0
解决办法
900
查看次数

在真实的IDE中开发Tampermonkey脚本,并自动部署到OpenUserJs存储库

我最近开始开发基于Tampermonkey脚本的开发,该脚本托管在OpenUserJs上。似乎我将来会在此脚本上投入更多时间,以使其保持最新状态并在有时间时扩展其功能。我在Tampermonkey编辑器上编写的第一行代码已集成到chrome(脚本的编辑按钮)中。

但是我不喜欢它,我最想念的是某种自动完成/智能。Visual Studio在这里要好得多,所以我改用VS。问题:进行任何更改后,我必须复制孔代码并将其粘贴到Tampermonkey编辑器(Google Chrome)中。那很烦人,而且不是很灵活,因为当脚本增长时,我无法真正将代码拆分为多个js文件。

那么有没有办法使它自动化?我的想象是:我将js文件保存在VS(ctrl + s)中,然后将该脚本加载到我的Google chrome本地开发实例中以进行测试。

扩展名

我想将Alpha / beta版本作为托管版本发布在OpenUserJs上。因此,我可以轻松地在不同系统上测试发行版。而且我还有至少一个系统,像我的最终用户一样,我在OpenUserJs存储库上执行真正的更新过程。我认为这很重要,根据我的手动工作流程(OpenUserJs编辑器中的c&p),我已经看到了一些差异。

我最好的选择是从git知道的某种分支。这样我就可以像生产用户一样从OpenUserJs安装脚本,但是我可以选择某个地方来获取例如分支开发而不是master。OpenUserJs似乎支持github作为源库,但是没有分支。我无法想象,没有针对此类问题的解决方案,至少每个拥有较大脚本的开发人员都应该拥有...

javascript deployment google-chrome visual-studio tampermonkey

7
推荐指数
2
解决办法
2500
查看次数

阻止执行特定的内联脚本标记

我正在尝试为Tampermonkey编写脚本,以防止执行特定的内联脚本标签。页面的主体看起来像这样

<body>
  <!-- the following script tag should be executed-->
  <script type="text/javascript">
    alert("I'm executed as normal")
  </script>
  <!-- the following script tag should NOT be executed-->
  <script type="text/javascript">
    alert("I should not be executed")
  </script>
  <!-- the following script tag should be executed-->
  <script type="text/javascript">
    alert("I'm executed as normal, too")
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我试图script使用Tampermonkey脚本删除该标签,但是如果我在上运行它 document-startdocument-bodyscript标签尚不存在。如果我在运行它,document-end或者要删除document-idlescript标签在执行Tampermonkey脚本之前运行。

如何防止执行script标签?


注意:script我要阻止执行的实际标签包含window.location = 'redirect-url'。因此,在这种情况下,防止重新加载也就足够了。


版本: …

html javascript tampermonkey

7
推荐指数
2
解决办法
634
查看次数

将 NPM 包包含到 tampermonkey 脚本中

我想创建一个 TamperMonkey 脚本来解析来自 EtherScan.io 的一些 ABI 数据(参见:https : //github.com/devedse/DeveEtherscanParser)。

我现在做了一些穷人 ABI 解码,但我发现有一个库可以做到这一点:https : //github.com/jacogr/ethabi-js

我将如何将此 NPM 包包含到我的 tampermonkey 脚本中?

javascript npm tampermonkey

7
推荐指数
0
解决办法
1412
查看次数

当浏览器未聚焦时从网站复制到剪贴板

我想为网站创建一个非常小的扩展,它会自动将一些值复制到剪贴板。

问题是我希望它复制该值,即使浏览器没有聚焦,例如:

  1. 我打开网站,我的扩展程序监听页面上的变化
  2. 我打开不同的应用程序
  3. 如果页面上发生某些变化,则扩展程序应该复制一些值
  4. 我正在使用的主要应用程序仍然是焦点,但我可以 CTRL+V 粘贴从网站复制的值,无需 alt+tab

我尝试使用剪贴板 API:

navigator.clipboard.writeText(...)
Run Code Online (Sandbox Code Playgroud)

但我认为它不会起作用,因为浏览器必须集中注意力(我认为)。

当页面聚焦时,复制工作正常。如果我尝试切换到不同的应用程序,当我的扩展尝试复制该值时,我会收到异常:

DOMException: Document is not focused.
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?

javascript google-chrome-extension tampermonkey

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

如何以编程方式将tampermonkey脚本更新为本地文件?

出于安全原因,Tampermonkey脚本不会保存在可访问的文件中,而是保存在插件数据中。实时编辑它们的唯一方法是使用Tampermonkey的集成编辑器。

但是,我宁愿使用IDE及其所有功能。我还想使用webpack从多个文件中打包脚本。

为此,我需要一种以编程方式将Tampermonkey中的脚本更改为新版本的方法。到目前为止,我所做的是手动将新脚本复制并粘贴到Tampermonkey的编辑器中,这真的很累。

那么如何以编程方式更改Tampermonkey的脚本源代码?

javascript tampermonkey

6
推荐指数
2
解决办法
1500
查看次数