有没有办法阻止chrome运行greasemonkey脚本,除了在某些域上?我可以做一些hackery location.href,但如果有一个更清洁的解决方案会很好.
当我通过拖动script.user.js器安装到浏览器中时,脚本会自动运行所有网站.
我该如何防止这种情况?
我正在尝试编写一个Greasemonkey脚本,并希望使用jQuery库来执行此操作,但我不太确定如何从Web地址中包含jQuery以进行滚动.
如何将jQuery(来自Google的Web服务器)包含在greasemonkey脚本中,以便我可以:
$(document).ready(function(){
// Greasemonkey stuff here
});
Run Code Online (Sandbox Code Playgroud)
我更愿意从这个来源获得它:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)
更新:感谢您的帮助,答案非常丰富.不过,我确实更多地利用了我的GoogleFu并遇到了这个解决方案:http://joanpiedra.com/jquery/greasemonkey/
像魅力一样工作..只需更新谷歌的托管版jQuery即可完成.
如果您创建Greasemonkey脚本@include *并转到像youtube这样的站点,则每次刷新时它都会运行脚本20次以上.这是在Firefox上,不确定Chrome.
有办法防止这种情况吗?
我注意到在编译CoffeeScript时,没有保留任何单行注释.
这是有问题的,因为我正在尝试在CoffeeScript中编写greasemonkey/userscript,并且它们依赖于元数据块的注释.
我尝试过使用反引号,但是注释的反引号似乎有问题:
`// ==UserScript==
// @version 1.0
// ==/UserScript==`
alert "hello world"
Run Code Online (Sandbox Code Playgroud)
变
// ==UserScript==
// @version 1.0
// ==/UserScript==;alert("hello world");
Run Code Online (Sandbox Code Playgroud)
如果我在结束反击之前添加额外的一行,我得到:
// ==UserScript==
// @version 1.0
// ==/UserScript==
;alert("hello world");
Run Code Online (Sandbox Code Playgroud)
拥有自动包装的便利也很好..但我想如果没有-bare元数据块也会被包装.
有没有更好的方法来解决这个问题?
我正在尝试修改我的GreaseMonkey脚本,从window.onload触发到window.DOMContentLoaded,但此事件永远不会触发.
我正在使用FireFox 2.0.0.16/GreaseMonkey 0.8.20080609
这是我正在尝试修改的完整脚本,正在更改:
window.addEventListener ("load", doStuff, false);
Run Code Online (Sandbox Code Playgroud)
至
window.addEventListener ("DOMContentLoaded", doStuff, false);
Run Code Online (Sandbox Code Playgroud) 自从几天前发布了新的Greasemonkey 1.0以来,每个拥有jQuery的站点以及我在Greasemonkey脚本中使用jQuery的站点都没有正确运行我的脚本.我在我的GS脚本中使用@require的jQuery (使用元数据)与页面的jQuery冲突.这是由于新@grant代码.
我已经阅读了文档,但仍然不知道如何再次在沙箱中运行GS脚本; 唯一的选择似乎是授予对GS API的访问权限或将其授予无API并在没有任何安全限制的情况下运行脚本,当我设计了几十个GS脚本来运行时,这对我来说根本不起作用有安全限制,喜欢这样.
我有一个用于Firefox的Greasemonkey脚本.该脚本包括这个元块和一些代码行.
我想在服务器上更新我的脚本,然后自动更新浏览器的脚本.该requireSecureUpdates选项已关闭.
我究竟做错了什么?
我的1.meta.js
// ==UserScript==
// @name Ibood autosubmit
// @include https://*.ibood.com/*
// @include http://*.ibood.com/*
// @include *
// @version 1.1
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_addStyle
// @downloadURL http://www.tipsvoorbesparen.nl/1.user.js
// @updateURL http://www.tipsvoorbesparen.nl/1.meta.js
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud) 我的目标是检测网页上未访问的链接,然后创建一个greasemonkey脚本来点击这些链接.通过未访问的链接在这里我指的是我没有打开的链接.由于我可以看到所有浏览器都提供了更改已访问和未访问链接颜色的功能,因此可以以任何方式检测这些链接.在搜索时,我发现了这个链接:http://www.mozdev.org/pipermail/greasemonkey/2005-November/006821.html但有人告诉我,这已经不可能了.请帮忙.
在开发这个小用户时我遇到了一个问题.当我想XMLHttpRequest用我的脚本阻止正在运行的网站中的每一个时,没有发生任何事情(至少在Chrome上):
function main() {
// Override XHR.open with a custom function
window.XMLHttpRequest.prototype.open = function() {
// Nothing... so it's supposed to block every xhr.open() call
}
}
main();
Run Code Online (Sandbox Code Playgroud)
更换时同样的事情window的unsafeWindow.
然而,当我使用这个小技巧时,一切都像魅力一样:
// No more call to main(), and:
var script = document.createElement("script");
script.textContent = "(" + main.toString() + ")();";
document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
每次调用xhr.open都被我的自定义函数替换,不再需要AJAX.
所以我猜这个window元素在main从脚本内部调用时与从<script></script>容器中调用时的元素不同.有人能解释一下为什么吗?
我正在尝试在Firefox扩展中使用jQuery,并且实际上想要使用jQuery来操作当前页面的DOM,而不是XUL文件的上下文.因此,我在我的XUL文件中加载jQuery,并将其传递给沙盒中的一些脚本(使用Greasemonkey扩展编译器http://arantius.com/misc/greasemonkey/script-compiler).由于jQuery没有加载页面DOM,我想将其选择器上下文设置为页面DOM,而不是总是将其传递给jQuery调用.
我按照如何在Firefox扩展中使用jQuery的解决方案,它几乎实现了我想要的.
jQuery.noConflict();
$ = function(selector,context){ return new jQuery.fn.init(selector,context||example.doc); };
$.fn = $.prototype = jQuery.fn;
Run Code Online (Sandbox Code Playgroud)
我可以调用jQuery()函数,页面DOM将用作上下文.但是,我不能使用像jQuery.trim这样的函数,因为它们没有定义.
我从解决方案中想到了这一点
$.fn = $.prototype = jQuery.fn;
Run Code Online (Sandbox Code Playgroud)
将让我自己的jQuery对象继承所有jQuery原型属性,但显然不会.
给一个vanilla jQuery对象,如何重新定义它以使用某个元素作为选择器上下文,同时保留所有jQuery函数?
greasemonkey ×10
javascript ×9
firefox ×3
jquery ×3
tampermonkey ×3
userscripts ×2
auto-update ×1
click ×1
coffeescript ×1
comments ×1
dom ×1
hyperlink ×1
scope ×1