Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Greasemonkey的简单替代品_Javascript_Google Chrome_Browser_Greasemonkey - Fatal编程技术网

Javascript Greasemonkey的简单替代品

Javascript Greasemonkey的简单替代品,javascript,google-chrome,browser,greasemonkey,Javascript,Google Chrome,Browser,Greasemonkey,我喜欢通用汽车的概念,但在实践中,除非你一直使用它,并且是一个绝对的JS神,否则它是不可能使用的(也许我只是吮吸?) 如果有一个小小的扩展,在某个站点的页面加载之后运行几行JS,那将非常有用。但这不是通用汽车所做的。与通用汽车公司,你必须处理多个帧和那些恼人的安全问题和范围层层。 即使您只是忽略了正确的过程,并使用了unsafewindow或其他黑客之一,它通常仍然不起作用 使用JS非常容易,您可以在浏览器控制台中运行它来做您想做的事情,但是当传输到用户脚本时,它永远不起作用。greasemon

我喜欢通用汽车的概念,但在实践中,除非你一直使用它,并且是一个绝对的JS神,否则它是不可能使用的(也许我只是吮吸?)

如果有一个小小的扩展,在某个站点的页面加载之后运行几行JS,那将非常有用。但这不是通用汽车所做的。与通用汽车公司,你必须处理多个帧和那些恼人的安全问题和范围层层。 即使您只是忽略了正确的过程,并使用了unsafewindow或其他黑客之一,它通常仍然不起作用

使用JS非常容易,您可以在浏览器控制台中运行它来做您想做的事情,但是当传输到用户脚本时,它永远不起作用。greasemonkey中是否有我可以更改的设置,或者是否有一个完全面向易用性的不同扩展

注意:我使用的是Chrome,因此,对于适用于特定浏览器的解决方案,可以获得额外的积分


Summy:我想要一种方法来自动运行与特定页面上的控制台具有相同作用域/权限的脚本。

除了Firefox的Greasemonkey或Chrome的自动运行用户JS的userscripts之外,没有更简单的选择。你可以,但这没有多大意义

如果您不关心GM和userscripts提供的强大的额外功能,并且总是想在某个站点的页面加载后“(获取)几行JS并(运行)它们”——忽略iFrame,那么只需使用以下代码作为所有脚本的基本模板:

/==UserScript==
//@name\u用于简单、跨浏览器、JS注入的基本模板。
//@match*://YOUR_SERVER.COM/YOUR_PATH/*
//@在文档开始时运行
//==/UserScript==
if(window.top!=window.self)/--不要在帧或iframe上运行。
返回;
函数scriptMain(){
//将所有代码放在这里,包括创建的所有函数。
console.log(“你好,世界!”);
}
window.addEventListener(“加载”,scriptMainLoader,false);
函数scriptMainLoader(){
addJS_节点(null,null,scriptMain);
}
函数addJS_节点(文本、s_URL、函数名){
var D=文件;
var scriptNode=D.createElement('script');
scriptNode.type=“text/javascript”;
如果(text)scriptNode.textContent=text;
如果(s_URL)scriptNode.src=s_URL;
if(funcToRun)scriptNode.textContent='('+funcToRun.toString()+')()';
var targ=D.getElementsByTagName('head')[0]| | D.body | | D.documentElement;
target.appendChild(脚本节点);
}


请注意,
@在文档开始时运行
是必需的(对于Chrome),但您的代码在文档加载时仍会启动。

。也看,再加上很多其他的,包括一个,啊,那就是这些。这些在很多情况下都很有用,但用户脚本的优点在于它们能自动在所需的页面上运行。是的,JSFIDLE对我来说特别有用。@JaredFarrish-这个“整理”按钮有什么区别?chrome有一个扩展,它可以做到这一点,但我记不起它的名字了。只要搜索JavaScript用户脚本或类似的东西,您就会找到它。(不是相扑)。明天我会通过一个链接回来查看。是的,就像我说的,在实际情况下,即使有解决办法(不安全…、注射和地址栏使用),我发现什么都不起作用。这与我现在的特殊情况没有什么不同:“hotmail.com上的$Acb.close('Ad160x600_0',InboxPage.onskysparcorclose);”(自动单击close广告链接以提供更多屏幕空间)。每次都能在控制台中完美运行。你的“更简单”的选择也会以同样的方式失败。在该页面上,在您想要的功能可用之前,显然存在AJAX延迟。如果它“从控制台工作”,那是因为你在页面加载几秒钟后运行它。解决方案是使用计时器再等待几秒钟(或等待多长时间),或者像本教程的第二部分那样轮询目标代码。AJAX延迟始终高度依赖于逐页的详细信息。没有比这更简单的方法了。我只是花了一个小时试着让一个简单的脚本工作。你真是天赐之物