我正在编写一个 GreaseMonkey 脚本(使用 JQuery),并且我需要一些由原始页面中的脚本设置的变量,如下所示:
<script type="text/javascript">
var rData = {"20982211":[1,0,1],"20981187":[8,0,4]};
</script>
Run Code Online (Sandbox Code Playgroud)
我从另一个页面获取这个元素并尝试评估它,奇怪的是这不起作用:
$.get(link_url, null, function(data) {
alert("1:" + rData);
eval($(data).find("script").text());
alert("2:" + rData);
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我运行脚本时,它可以在 firebug 控制台上工作(我只是在没有 .get 的情况下直接在目标页面上尝试了 eval),但它没有。它在两个警报中都给了我“null”。
有任何想法吗?
我是 Greasemonkey 的新手,我想用标签替换图像链接<img>。
例如,这个论坛页面有很多链接,例如:
<a target="_blank" href="http://url.com/pic.gif">http://url.com/pic.gif</a>
Run Code Online (Sandbox Code Playgroud)
我想用以下图像替换这些链接:
<img src="http://url.com/pic.gif">
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并设法找到了类似Greasemonkey 用户组的内容。
但是,我编辑的代码:
var i, x = document.evaluate (
'//*[@target="_blank"][@href="="]',
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (i = 0; i < x.snapshotLength; i++)
x.snapshotItem(i).setAttribute("href", "img src");
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。
请告知我应该如何创建这个脚本。
是否可以使用 Javascript 提取属性HTML tag。例如,我想知道 which <div>has内部存在的值align = "center"。
<div align="center">Hello</div>
Run Code Online (Sandbox Code Playgroud)
我所知道的是:
var division=document.querySelectorAll("div");
Run Code Online (Sandbox Code Playgroud)
但它选择之间的元素<div> & </div>而不是properties内部的元素。
我想在Greasemonkey 脚本中使用它,我可以在其中使用Javascript.
希望我清楚..!!
我的编码经验为零,但我使用的网站的某些“盒子”颜色太亮了。
我想创建一个插件,以便我自己和另一个用户能够使用“黑暗主题”
我遵循了一些指南,但我无法让它工作......
我特别想将“leftcolumn”背景颜色从“ffffff”更改为“806546”
它目前正在使用 CSS 参考文件来更改颜色,但我已经通过使用 chrome 的编辑器添加该元素成功地编辑了颜色。
如何更改 CSS 文件的元素以更改背景颜色?
<div class="leftcolumn" style="background-color: #806546;"></div>
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
似乎什么都不起作用。是否有可能在此页面上完全像人类一样更改输入值?
我正在尝试更改输入值并自动提交表单。
我正在为gmail编写一个greasemonkey脚本,我需要复制"收件箱"链接.使用cloneNode工作正常,但我认为有一个onclick事件在运行时附加到它.因此,这是一个两部分问题:1.有没有办法查看哪些事件附加到节点?2.有没有办法复制这些事件?我发现最接近的是jQuery,我还没准备好去那里.谢谢!
我有以下代码:
function sdefaults()
{
alert("test");
}
var btnpos, sbtn;
btnpos = document.getElementsByName('somePosition')[0];
sbtn = document.createElement('input');
btnpos.parentNode.insertBefore(sbtn, btnpos.nextSibling);
sbtn.type = "button";
sbtn.name = "social";
sbtn.value = "Defaults";
sbtn.onClick = sdefaults();
Run Code Online (Sandbox Code Playgroud)
按钮出现在我想要的位置,并且名称/值设置正确.但是,当我加载页面时,sdefaults()运行该功能,然后如果我单击该按钮,则没有任何反应.任何人都可以提供任何有关如何防止该函数在加载时运行并强制它仅运行onclick的任何见解?
谢谢
我尝试使用Range-header在Greasemonkey脚本中发送请求.请求的网站有点长,我知道我实际需要哪些部分,所以我想,而不是要求整个网站下载我可以请求必要的500字节来加快速度.
但是,Range: bytes=0-500总是给我完整的网站.我也试过了Content-Range: bytes=0-500,但是不起作用,Content-Length:500由于安全问题,不允许再设置它.
那么,有谁知道,为什么会这样?我正在使用Greasemonkey脚本:
GM_xmlhttpRequest({
method: 'GET',
url: "http://colonel-strawberry.deviantart.com/",
headers: {"Range": "bytes=0-500"},
onload: function (responseDetails) {
console.log(responseDetails);
},
onerror: function(responseDetails) {
console.log("err:"+responseDetails);
}
});
Run Code Online (Sandbox Code Playgroud)
使用response-header:
Date: Mon, 05 Nov 2012 17:11:42 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP COR CURa OUR STP"
Connection: Keep-Alive
Server: Apache
Vary: Accept-Encoding
Content-Type: text/html
Cache-Control: private
Keep-Alive: timeout=45
Run Code Online (Sandbox Code Playgroud) 我有一个Greasemonkey脚本,我想要混淆.我想知道可用的"Packer"Javascript混淆器出了什么问题.
它压缩脚本很好,但安装后,脚本不起作用.是否有任何PHP类会混淆/打包GM脚本并保留功能?或者我该怎么做呢?
错误:
Timestamp: 01-05-2013 13:11:35
Error: missing ; before statement
Source File: file://file_path
Line: 1
Run Code Online (Sandbox Code Playgroud)
脚本:
// ==UserScript==
// @name Test
// @namespace http://*
// @description Test
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==
var SomeVar = "Something";
GM_setValue("foo","bar");
var AnotherVar = GM_getValue("foo");
alert(AnotherVar);
Run Code Online (Sandbox Code Playgroud)
打包脚本:
eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 3="4";5("1","6");0 2=7("1");8(2);',9,9,'var|foo|AnotherVar|SomeVar|Something|GM_setValue|bar|GM_getValue|alert'.split('|'),0,{}))
Run Code Online (Sandbox Code Playgroud) 我想用Greasemonkey来突出两个词,例如"巴塞尔,伯尔尼".如果我只使用巴塞尔,则以下版本有效.不是很好,但足够好.但是,当我使用两个单词时,突出显示不起作用.
// ==UserScript==
// @name highlight-some-words
// @description highlight some words in html
// @grant none
// ==/UserScript==
document.body.innerHTML= document.body.innerHTML.replace(/Basel|Bern/g, function(m){
return '<span style="background-color:lightgreen">'+m+'</span>'
});
Run Code Online (Sandbox Code Playgroud)
编辑:有趣的是,该脚本适用于stackoverflow.com但不适用于google.com.为什么?那么如何修改脚本呢?
greasemonkey ×10
javascript ×9
html ×4
css ×2
jquery ×2
tampermonkey ×2
ajax ×1
eval ×1
firefox ×1
gmail ×1
highlight ×1
http-headers ×1
hyperlink ×1
obfuscation ×1
php ×1
range ×1
setattribute ×1
tags ×1
userscripts ×1