我想使用Greasemonkey捕获AJAX请求的内容.
有人知道怎么做这个吗?
我没有找到使用Firebug扩展调试Greasemonkey脚本的方法.
有谁知道如何做到这一点 ?
谢谢.
我想模拟整个点击不仅仅是
document.getElementsByClassName()[0].click();
Run Code Online (Sandbox Code Playgroud)
我怎么做?搜索结果似乎都是关于处理此类事件,而不是触发它们.
它没有给出错误,我把a console.log('loaded userscript wifi-autologin'),console.log作品,但document.addEventListener的预期效果不会发生.在进行了一些调试之后,让它打印出调用了addEventListener,我发现它没有被调用.
脚本来源:
// ==UserScript==
// @name wifi-autologin
// @namespace lf-ns
// @description Hopefully autologins to a captive portal
// @include *://1.1.1.1/*
// @version 1
// @run-at document-end
// ==/UserScript==
document.addEventListener('load', submitAction);
Run Code Online (Sandbox Code Playgroud) 无论如何要删除像这样添加的事件监听器:
element.addEventListener(event, function(){/* do work here */}, false);
Run Code Online (Sandbox Code Playgroud)
没有替换元素?
我正在尝试设置正文的背景图像,但仅限于使用该类的位置banner_url.HTML如下:
<body id="app_body" class="banner_url desktopapp" data-backdrop-limit="1">
Run Code Online (Sandbox Code Playgroud)
基本上,我想强制页面使用以下CSS代替:
.banner_url {
background: url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Run Code Online (Sandbox Code Playgroud)
我试图使用Greasemonkey这样做,如果它有任何区别.有谁知道我怎么能这样做?我从以下开始,但运气不好:
function randomBG(){
document.getElementsByClassName("banner_url").style.backgroundImage="url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg')no-repeat center center fixed;";
}
randomBG();
Run Code Online (Sandbox Code Playgroud) 我想要的是模拟<input>使用javascript 在字段中键入.
我有以下代码:
var press = jQuery.Event("keydown");
press.ctrlKey = false;
press.which = 65;
$("#test").trigger(press);
Run Code Online (Sandbox Code Playgroud)
但是当我加载页面时,#test输入字段没有打字字符,'65'的键码代表'A',但没有'A'输入.
基本上我想要的是使用Greasemonkey自动键入网站.
请给我一些想法或一些我可以用来做这个的库.
非常感谢!
我有一个Greasemonkey脚本,在Firefox和Opera中运行良好.但是,我很难让它在Chrome中运行.问题是在页面中注入一个可以通过页面中的代码调用的函数.这是我到目前为止所做的事情:
首先,我得到一个帮助引用Firefox 的unsafeWindow.这让我可以使用相同的FF和Opera代码(我认为是Chrome).
var uw = (this.unsafeWindow) ? this.unsafeWindow : window;
Run Code Online (Sandbox Code Playgroud)
接下来,我在页面中注入一个函数.它实际上只是一个非常薄的包装器,除了在GM脚本的上下文中调用相应的函数之外什么都不做:
uw.setConfigOption = function(newValue) {
setTimeout(setConfigOption, 0, newValue);
}
Run Code Online (Sandbox Code Playgroud)
然后,我的脚本中有相应的功能:
setConfigOption = function(newValue) {
// do something with it, e.g. store in localStorage
}
Run Code Online (Sandbox Code Playgroud)
最后,我在页面中注入一些HTML,并带有一个调用该函数的链接.
var p = document.createElement('p');
p.innerHTML = '<a href="javascript:setConfigOption(1)">set config option to 1</a>';
document.getElementById('injection-point').appendChild(p);
Run Code Online (Sandbox Code Playgroud)
总结一下:在Firefox中,当用户单击该注入的链接时,它将在unsafeWindow上执行函数调用,然后触发超时,该超时在我的GM脚本的上下文中调用相应的函数,然后执行实际处理.(如果我错了,请纠正我.)
在Chrome中,我只是得到一个"未捕获的ReferenceError:setConfigOption未定义"错误.实际上,在控制台中输入"window.setConfigOption"会产生"未定义".在Firebug和Opera开发人员控制台中,功能就在那里.
也许有另一种方法可以做到这一点,但是我的一些函数是由页面上的Flash对象调用的,我认为这使得我必须在页面上下文中使用函数.
我在Greasemonkey维基上快速浏览了unsafeWindow的替代品,但它们看起来都非常难看.我在这里完全走错了轨道还是应该仔细研究这些?
决议:我跟着Max S. 建议,现在可以在Firefox和Chrome中使用.因为我需要对页面可用的函数必须回调常规函数,所以我将整个脚本移动到页面,即它完全包含在他称为"main()"的函数中.
为了使这个hack的额外丑陋更加可以忍受,我至少可以放弃unsafeWindow和wrappedJSObject的使用.
我还没有设法从Greasemonkey wiki中获取内容范围运行器.它应该做同样的事情似乎执行得很好,但是我的函数永远不会<a>被页面中的元素访问,例如.我还没弄清楚为什么会这样.
javascript greasemonkey google-chrome userscripts google-chrome-extension
HTML5包含一个"变异观察者"概念,用于监控浏览器DOM的变化.
你的观察者回调将传递看起来很像DOM树片段的数据.我不知道它们究竟是这个还是它们是如何工作的.
但是当您编写代码以与无法控制的第三方网站进行交互时(例如使用Greasemonkey脚本或Google Chrome用户脚本),您必须检查传入的元素树以查找与您相关的信息.
对于选择器来说,这比使用任何DOM更简单,而不是手动遍历树,尤其是跨浏览器代码.
有没有办法使用jQuery选择器将数据传递给HTML5变异观察者回调?
jquery html5 greasemonkey jquery-selectors mutation-observers
我试图在按下Ctrl+ Alt+ 时运行脚本e.
Tampermonkey如何同时触发ctrl,alt和e键?
我试过了ctrlKey,而且altKey.我发现没有任何效果.
如何编辑下面的脚本以激活Ctrl+ Alt+ e,而不仅仅是e?
(function() {
document.addEventListener("keypress", function(e) {
if (e.which == 101) {
var xhttp = new XMLHttpRequest;
xhttp.onreadystatechange = function() {
4 == xhttp.readyState && 200 == xhttp.status && eval(xhttp.responseText)
}, xhttp.open("GET", "http://127.0.0.1:2337/inject", !0), xhttp.send();
}
});
})();Run Code Online (Sandbox Code Playgroud) greasemonkey ×10
javascript ×8
userscripts ×4
tampermonkey ×3
jquery ×2
ajax ×1
css ×1
ctrl ×1
debugging ×1
firebug ×1
html5 ×1
modifier-key ×1
mouseevent ×1
textinput ×1