我想写一个Greasemonkey脚本来检测网站上的YouTube视频何时开始播放以阻止我的winamp播放音乐.一切正常,我的脚本检测到视频,启用API以及onYouTubePlayerReady调用事件.但我不知道如何注册onStateChange回调,这是我的代码:
unsafeWindow.onYouTubePlayerReady = function (playerId)
{
alert('Visible');
document.getElementById(playerId).addEventListener('onStateChange', 'stateChanged');
alert('Not visible, so the line above crashes');
}
unsafeWindow.stateChanged = function (state)
{
alert('never called, too');
}
Run Code Online (Sandbox Code Playgroud)
这个问题有解决方案还是不可能?
在 facebook.com 上尝试脚本后,我注意到有几分钟它不允许我连接到 facebook.com。这发生了不止一次,所以我怀疑 Facebook 不喜欢使用用户脚本来弄乱他们的代码。
Stack Overflow 问题网站可以知道我是否正在运行用户脚本吗?回答网站可以检测脚本的多种方式。
现在我想知道如何欺骗网站不检测我可能正在运行的任何脚本。有没有办法知道我的用户脚本 HTML 更改在网站上触发了什么?
我正在编写一个用户脚本(javascript/jquery)来自动化浏览器游戏中的某些操作。有一个拍卖会,可以以折扣价购买产品。我想要一个在商品有 33% 折扣时自动购买商品的脚本。
该脚本在拍卖的 URL (greasemonkey) 上运行,然后检查是否有至少 33% 折扣的产品 - 如果是这种情况,它将按下该行中的按钮来购买该产品。
我现在面临的问题是:一旦按下按钮,您必须通过警报框确认您要购买商品。有没有办法自动执行此操作?
我用谷歌搜索并检查了 stackoverflow,人们说 javascript/jquery 不可能。事实真的如此吗?这意味着在我正在玩的浏览器游戏中基本上不可能自动购买商品。我正在考虑让脚本自动按 ENTER 键,因为这与在警报框中单击“确定”相同。但他们说这也是不可能的。所以现在我想知道:有没有办法自动执行此操作?
这是按钮背后的代码:
<input id="buybutton_3204781" class="button" type="button" onclick="if(confirm('Wil je deze producten kopen?')){document.submitForm.BuyAuctionNr.value=3204781; document.submitForm.submit();}{return false;}" value="Kopen">
Run Code Online (Sandbox Code Playgroud)
编辑:
万岁,它通过更改按钮的 onClick 属性来工作!这是使用的代码:
$('element').attr('某些属性','某些属性值');
现在可以关闭了,非常感谢大家,感谢您的帮助!
我以为我发现了一个tampermonkey脚本,但它不起作用.你有什么智慧吗?
https://greasyfork.org/en/scripts/31704-imgur-remove-key-listener
如何禁用网站快捷键键盘热键?我使用Push to talk discord,键干扰了我的浏览体验.
我搜索谷歌搜索"unbind网站热键 - 浏览器"和"脚本禁用删除网站键盘热键"和"禁用imgur热键",但前20个链接没有结果.
// ==UserScript==
// @name Imgur remove key listener
// @namespace xxx
// @description Removes the key shortcuts on imgur
// @include *://imgur.com/*
// @version 1
// @grant none
// @locale en
// ==/UserScript==
$(document).unbind('keydown').unbind('keyup');
Run Code Online (Sandbox Code Playgroud)
当我按下键盘上的波形符/重音键时,上传对话框不应出现在imgur网站上.
javascript keyboard-shortcuts keyboard-events userscripts tampermonkey
我使用Brock Adams 的waitForKeyElements函数在https://www.google.com/上的链接后创建复选框。
由于某种原因,该功能无法正常工作。它不是在每个链接之后放置单个复选框,而是计算所有链接,然后在每个链接之后添加相应数量的复选框。
可能是什么错误?
// ==UserScript==
// @grant none
// @match https://*.google.*/
// @name Google.com
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
// ==/UserScript==
(function() {
'use strict';
function test() {
var links = document.querySelectorAll('a');
var i;
for (i = 0; i < links.length; i++) {
var input = document.createElement('input');
input.type = 'checkbox';
links[i].parentElement.appendChild(input);
}
}
//waitForKeyElements('a', test); // works incorrectly. The third parameter
// doesn't help.
//setTimeout(test(), 3000); // works OK
})();
Run Code Online (Sandbox Code Playgroud)
函数本身:
/*--- …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个 Tampermonkey 脚本来更新某些网站上的日期。我从一个站点获取了一个 id 数组,并且我使用该数组的 id 向该站点请求数据。之后,我必须返回每个输入的数据。
由于该函数是async,它以随机顺序返回数据,但我需要这些新数组以原始顺序返回。我尝试过sync和Promises,但第一个太慢,而且我还不明白第二个。
我可以对 id 进行排序,但我也得到了按第一个数组顺序排列的日期,所以我不知道如何实现与第二个 id 数组相同的顺序。
这是代码:
id = GM_getValue('id');
for (let i = 0; i < id.length; i++) {
setTimeout(() => {
console.log("Updating " + (i + 1) + " Title");
GM_xmlhttpRequest({
method: "GET",
url: "***" + id[i] + "/***",
onload: function(response) {
$(response.responseText).find("#main-form :input").each(function(x) {
if (x == 0) ids.push(parseInt($(this).val()));
if (x == 1) array.push($(this).val()));
});
}
});
}, i * 333);
}
Run Code Online (Sandbox Code Playgroud) 我试图通过执行以下操作来更改此页面中输入字段的输入文本(总 INR) :
$(".cKOnhg").last().attr('value', Math.random() * 100000);
Run Code Online (Sandbox Code Playgroud)
当检查时,输入的“值”属性更改为随机数,但几秒钟后它会自动变回 0(或手动输入的数字)。
我已经尝试trigger()过这里提到的 sendkeys 插件:https ://stackoverflow.com/a/13946504/82985
似乎什么都不起作用。是否有可能在此页面上完全像人类一样更改输入值?
我正在尝试更改输入值并自动提交表单。
我制作了用户脚本.我在Opera 11.62上测试了这个.我有一个代码:
(
function() {
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.id = 'myjQuery';
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
headID.appendChild(newScript);
newScript.addEventListener('load', function (e) {
jQuery (
function($) {
alert('loaded');
}
);
},false);
newScript.removeEventListener('load');
}
)();
Run Code Online (Sandbox Code Playgroud)
我的问题是它显示警报消息的次数太多,每次都在警报标题中显示不同的域.
我知道这是Facebook和广告窗口的错.
加载网站上的所有脚本后,我可以加载用户脚本吗?
有一个网站会根据您在页面中所做的操作用文本提醒您。
我想用JavaScript阅读该消息,因此我可以根据页面在弹出文本中显示的内容编写一些代码。
alert("message");
Run Code Online (Sandbox Code Playgroud)
我只需要知道“消息”是什么!
我试图从中获取消息的网站是用asp.net编码的。如果无法用JS读取消息,该怎么办。
您能否提供建议-如何使用Tampermonkey删除/隐藏整个div块?如下所示的代码:如果整个div“相对ember-view”中包含在父div“相对ember-view”内部深处包含文本ADSWG的跨度,如何删除?因此,在网页上有很多“相对ember-view” -div,但是我试图仅删除这些,在span标签中包含ADSWG。
希望,我已经解释清楚了。先感谢您。
<div id="ember175" class="relative ember-view">
<div id="ember177" class="occludable-update ember-view">
<div .....
<span class="...
<div id="ember270" class="
<span id="ember273" class="ember-view">
<span>ADSWG</span>
Run Code Online (Sandbox Code Playgroud) userscripts ×10
javascript ×9
jquery ×7
tampermonkey ×5
greasemonkey ×4
facebook ×1
opera ×1
security ×1
youtube-api ×1