greasemonkey 相关问题

从Firefox 57开始过时。根据需要使用[greasemonkey-4]或[tampermonkey]。如果使用其他浏览器用户脚本引擎,请使用[userscripts]。

同步同一 Greasemonkey 脚本的多个实例

我有一个 Greasemonkey 用户脚本,它在任务队列上运行。该队列是一堆序列化的 JSON 对象,分散在脚本私有首选项空间中,可以通过 GM_getValue 访问,

回答 1 投票 0

如何使用greasemonkey脚本阻止特定的url或.js文件执行? (客户端)

我想停止 javascript .js 以使用 Greasemonkey/violentmonkey scrpit 加载到特定网站 https://cdn.jsdelivr.net/gh/s9e/[email protected]/loader.min.js 这是加载的脚本

回答 2 投票 0

尝试创建greasemonkey来选中页面上的复选框

新的greasemonkey用户,我已经整理了这段代码来检查一个名为isRegex的框...但是复选框代码被跳过 console.log("猴子脚本"); var chkBox,regBox; var sQuery = "/...

回答 1 投票 0

greasemonkey 是 Google Chrome 的内置扩展吗?

我正在尝试greasemonkey 和Google 的Chrome 扩展。并发现Chrome似乎使用了与GM相同的API名称。 (我好像也有同样的毛病……) 只是想知道是否有油脂...

回答 5 投票 0

Greasemonkey 脚本编译为插件

当脚本编译为附加组件时,GM 脚本中使用的配置值(GM_setvalue 和 GM_getvalue)会发生什么情况?如果 Greasemonkey 不是……,它们存储在哪里

回答 1 投票 0

Greasemonkey 脚本编译器中的非法操作[重复]

我有一个 Greasemonkey 脚本,并且我正在使用 Greasemonkey 到 xpi 编译器 我使用这个脚本: // ==用户脚本== // @name 测试脚本 // @作者布拉 // ==/用户脚本== var 主 =

回答 1 投票 0

Greasemonkey Uncaught ReferenceError:initScript 未仅在 Chrome 中定义

下面的代码,Greasemonkey 脚本,适用于 Firefox 和 Opera。当打包用于 Safari 时,它也可以正常工作。然而,当在 Chrome 中运行时,我得到 Uncaught ReferenceError: initScript is not Defined。

回答 1 投票 0

如何使用 javascript 更改下载时的文件名?

该脚本添加了视频的下载链接(在特定站点上)。下载时如何将文件名更改为其他名称? 示例网址: “http://website.com/video.mp4” 我的例子...

回答 7 投票 0

页面导航后保持 GreaseMonkey 脚本正常工作

如果 Greasemonkey 脚本运行函数,然后使用 window.location.assign() 导航到新页面,是否有办法保持这些函数运行,而不需要重新加载整个脚本...

回答 2 投票 0

正则表达式在找到某些字符时排除整行匹配

我坚持以最干净的方式来完成两位正则表达式。 到目前为止我想出的每一个解决方案似乎都很笨拙。 示例文本 匹配:选择: blah blah blah 123 代表 100 个字符,这个

回答 3 投票 0

Greasemonkey:监听表是否“刷新”

我正在开发一个 Tampermonkey/Greasemonkey 脚本,该脚本将一个新列添加到此页面 https://www.fangraphs.com/leaders/major-league 上的表中。 我有一个工作版本,添加了列和它

回答 1 投票 0

如何在客户端的 HTML 页面中语法高亮 JSON?

我正在通过外部服务使用 HTML 文档页面,该服务在 HTML 页面中呈现 JSON 片段。 HTML 源代码如下所示: { “产品链接”:“https://example... 我正在通过外部服务使用HTML文档页面,该服务在HTML页面中呈现JSON片段。 HTML 源代码如下所示: <pre>{ "product-link": "https://example.com/product-link", "teaser_image": "https://example.com/teaser-image", "product_image_first": "https://example.com/product-image-first", "headline": "Example headline", }</pre> JSON 块呈现 没有 语法突出显示。 由于我不控制外部服务,我想通过用户脚本将语法突出显示(颜色)应用于 JSON 片段。 我找到了Greasemonkey,但仍然缺少如何注入语法荧光笔库的要点。 感谢 xander 这是我基于 code-prettify 的用户脚本的第一个工作版本: (function(d) { stylizePreElements = function() { var preElements = document.getElementsByTagName("pre"); for (i = 0; i < preElements.length; ++i) { var preElement = preElements[i]; preElement.className += "prettyprint"; } }; injectPrettifyScript = function() { var scriptElement = document.createElement('script'); scriptElement.setAttribute("src", "https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"); document.head.appendChild(scriptElement); }; stylizePreElements(); injectPrettifyScript(); })(document) 谢谢你让我的一天变得更加美好! 跟进这个答案,如果您在格式化运行后更改元素的文本内容,PR.prettyPrint();将不会重新格式化它。 Code-prettify 将类 prettyprinted 添加到其格式化为标记的元素中,以便不重新处理它们。 以下是更改内容后删除标记的示例: const url = "https://jsonplaceholder.typicode.com/posts"; fetch(url) .then(response => { if (!response.ok) { throw Error(response.statusText); } return response.text(); }) .then(data => { const pre = document.querySelector("pre"); pre.textContent = data; pre.classList.remove("prettyprinted"); PR.prettyPrint(); }) .catch(err => console.error(err)); body, pre { overflow: scroll; margin: 0; } <script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sons-of-obsidian"></script> <pre class="prettyprint">{"foo": 42}</pre> 如果您不是可用样式的忠实粉丝,请考虑hljs。

回答 2 投票 0

如何在 Chrome 中模仿 Greasemonkey/Firefox 的 unsafeWindow 功能?

我现在只是在 chrome 中摆弄用户脚本,所以请容忍我潜在的无知/白痴。 在我正在为其编写脚本的页面中,有一个 元素声明...</desc> <question vote="7"> <p>我现在只是在 chrome 中摆弄用户脚本,所以请容忍我潜在的无知/白痴。</p> <p>在我正在为其编写脚本的页面中,有一个 <pre><code>&lt;script&gt;</code></pre> 元素声明了一个变量 <pre><code>x</code></pre>。 这是否意味着,在我的用户脚本中,我只能从全局命名空间访问<pre><code>x</code></pre>?</p> <p>例如,如果我的用户脚本中的唯一行是 <pre><code>alert(x);</code></pre>,它是否应该按预期工作(假设 <pre><code>x</code></pre> 是一个字符串)?我知道 chrome 不支持 unsafewindow,但由于某种原因,我发现不可能弄清楚如何模仿该功能。还可能吗?</p> </question> <answer tick="false" vote="13"> <p>这将为您提供对窗口对象的引用(如 p):</p> <pre><code>var p = unsafeWindow; if(window.navigator.vendor.match(/Google/)) { var div = document.createElement(&#34;div&#34;); div.setAttribute(&#34;onclick&#34;, &#34;return window;&#34;); p = div.onclick(); }; </code></pre> </answer> <answer tick="false" vote="11"> <p><strong>更新:</strong><br/> <pre><code>onclick</code></pre> 漏洞在最新的 Chrome 版本中不再起作用。</p> <p>要在 Chrome 中获得 <pre><code>unsafeWindow</code></pre> 功能,最好的选择是安装并使用 <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo" rel="nofollow noreferrer">Tampermonkey</a> ——无论如何,你应该明智地这样做。 Tampermonkey 完全支持 Greasemonkey API,并且脚本管理更加简单。</p> <p>Greasemonkey 脚本和 Tampermonkey 脚本几乎总是完全兼容,但对于普通 Chrome 用户脚本来说并非如此。</p> <p>放弃 Tampermonkey,唯一仍然有效的替代方案是使用某种形式的 <a href="https://stackoverflow.com/a/13485650/331508">脚本注入</a>。</p> <p><br/></p> <hr/> <p><strong>以下内容现已过时:</strong> </p> <p><a href="https://stackoverflow.com/a/10828021/331508">Chrome 现在为用户脚本/内容脚本<pre>定义了 </pre><code>unsafeWindow</code></a>,但 Chrome 的 <pre><code>unsafeWindow</code></pre> 仍然不允许访问目标页面创建的 JS 对象。</p> <p>以下是如何提供适当的不安全,<pre><code>unsafeWindow</code></pre>——以跨浏览器的方式,使用<a href="https://stackoverflow.com/a/1294765/331508"><em>特征检测</em>(好)与<em>浏览器嗅探</em>(坏)</a>:</p> <pre><code>/*--- Create a proper unsafeWindow object on browsers where it doesn&#39;t exist (Chrome, mainly). Chrome now defines unsafeWindow, but does not give it the same access to a page&#39;s javascript that a properly unsafe, unsafeWindow has. This code remedies that. */ var bGreasemonkeyServiceDefined = false; try { if (typeof Components.interfaces.gmIGreasemonkeyService === &#34;object&#34;) { bGreasemonkeyServiceDefined = true; } } catch (err) { //Ignore. } if ( typeof unsafeWindow === &#34;undefined&#34; || ! bGreasemonkeyServiceDefined) { unsafeWindow = ( function () { var dummyElem = document.createElement(&#39;p&#39;); dummyElem.setAttribute (&#39;onclick&#39;, &#39;return window;&#39;); return dummyElem.onclick (); } ) (); } </code></pre> </answer> <answer tick="true" vote="9"> <p><pre><code>contentWindow</code></pre> 在 Chrome 3 中可用,但 <a href="http://groups.google.com/group/chromium-extensions/browse_thread/thread/a4ff886cfecf80ca" rel="nofollow noreferrer">在 Chrome 4 中被删除</a>。 Chrome 4 唯一可能的解决方案:</p> <pre><code>location.href=&#34;javascript:(function(){ alert(&#39;Hello&#39;); })()&#34; </code></pre> </answer> <answer tick="false" vote="1"> <p>如果您想与页面 JavaScript 交互,则必须将脚本插入页面中。 (当然,除非您想使用本页建议的任何技巧。)我已经编写了一个函数来为我自己的脚本执行此操作,我会将其发布在这里,以防有人想要使用它。</p> <pre><code>/* @description This function will insert the given code as a &lt;script&gt; or &lt;style&gt; block into a page. @param The code to insert; supported types are: JavaScript Function, String (JavaScript), String (CSS). @param2 Optional: The type of code that is inserted. If omitted, &#34;js&#34; is assumed. Possible values are &#39;js&#39; or &#39;css&#39;. @return The HTML element that was inserted, or FALSE on failure */ function insert(z,t){ var j,f,x,c,i,n,d d=document c=d.createElement i=d.head.appendChild a=d.createTextNode if(typeof z===&#39;function&#39;) j=!0,f=!0; if((t==&#39;js&#39;||!t)&amp;&amp;!f){j=!0,f=!1} if(t==&#39;css&#39;&amp;&amp;!j){x=c(&#39;style&#39;);x.setAttribute(&#39;type&#39;,&#39;text/css&#39;)} if(j){x=c(&#39;script&#39;);x.setAttribute(&#39;type&#39;,&#39;text/javascript&#39;)} if(f) n=a(&#39;(&#39;+z+&#39;)()&#39;);else n=a(z) x.appendChild(n) if(x){return i(x)}else{return !1} } </code></pre> <p>几个需要澄清的例子:</p> <pre><code>//Inserting a JavaScript function var func=function(){ stopAds(); startFileDownload(); } insert(func); //Inserting JavaScript as a string var strJS=&#34;prompt(\&#34;Copy:\&#34;,someVariableAtThePage);&#34;; insert(strJS); //Or with an OPTIONAL 2nd parameter: insert(strJS,&#39;js&#39;); //Inserting CSS var strCSS=&#34;.ad{display:none !important} #downloadButton{display:block}&#34;; insert(strCSS,&#39;css&#39;);//Specifying 2nd parameter as &#34;css&#34; is required. </code></pre> </answer> <answer tick="false" vote="0"> <p>好的,这是一个想法,您可以使用地址栏注入脚本...</p> <pre><code>javascript:var ElEm = document.createElement(&#34;script&#34;);ElEm.src=&#39;[path_to_script]&#39;;document.body.appendChild(ElEm); </code></pre> <p>然后你可以用你的javascript在窗口中运行你想要的任何内容</p> </answer> <answer tick="false" vote="0"> <p>@Johan 的答案中的脚本非常酷且有用。但我需要它并且想看到它<strong>去混淆</strong>。</p> <p>对于那些像我一样想要查看它或以可读格式使用它的人,就在这里。这是 <strong>same</strong> 函数,只是为了清晰起见进行了一些重构。这可能有助于更快地理解甚至分叉:</p> <pre><code>function insert(code, tipo) { let isJS, isFunc, x, n; if (typeof code === &#34;function&#34;) { isJS = true; isFunc = true; } if ((tipo === &#34;js&#34; || !tipo) &amp;&amp; !isFunc) { (isJS = true), (isFunc = false); } if (tipo === &#34;css&#34; &amp;&amp; !isJS) { x = document.createElement(&#34;style&#34;); x.setAttribute(&#34;type&#34;, &#34;text/css&#34;); } if (isJS) { x = document.createElement(&#34;script&#34;); x.setAttribute(&#34;type&#34;, &#34;text/javascript&#34;); } if (isFunc) n = document.createTextNode(&#34;(&#34; + code + &#34;)()&#34;); else n = document.createTextNode(code); x.appendChild(n); if (x) { return document.head.appendChild(x); } else { return false; } } </code></pre> </answer> </body></html>

回答 0 投票 0

欺骗 xmlhttprequest (greasemonkey)

我阻止了来自greatmonkey的XMLHttpRequest,但是当它没有得到响应时页面会出现错误。所以我尝试欺骗,就好像收到了回复一样。不幸的是,XMLHttpRequest 似乎已读取字段...

回答 2 投票 0

用户脚本如何向不同的域发出网络请求?

我正在尝试使用 JavaScript(使用 Greasemonkey)从我自己的网站中提取数据来自定义另一个网站。我使用的代码如下: 函数 getURL(url, func) { var xhr = 新的 XMLHttpRequ...

回答 1 投票 0

是否可以在 Greasemonkey 脚本中使用工人?

我想使用 Firefox 3.5 中引入的 Web Worker 工具来增强我正在开发的 Greasemonkey 脚本。 这可能吗? 我做了一些实验,但我无法通过......

回答 3 投票 0

如何让用户脚本重做同一URL的后续网页导航中的所有操作?

我有一个如下所示的用户脚本: document.querySelector('[title="选择:此选项"]').checked = true document.querySelector('[title="点击继续"]').click() 之后...

回答 1 投票 0

使用 JavaScript/GreaseMonkey 存储到文件中

我已经使用 Greasemonkey 从页面捕获了数据列表。 通用汽车脚本 var hit = GM_getValue("hit") || 0; var _url = "http://localhost:8080/test?p=$$pageNo$$"; _url = _url.replace("$$pageNo$$",...

回答 5 投票 0

如何使用 GreaseMonkey/ViolentMonkey 从字符串中检索全局上下文变量?

当尝试从 Javascript 中的字符串检索全局上下文(通常是窗口)中定义的变量时,我知道您可以简单地这样做: var 测试变量 = 123; console.log(窗口["testVa...

回答 2 投票 0

在网站上启用“粘贴”的脚本

问题涉及特定网站:NS.nl 上的门票订购。该页面上有一个用于输入电子邮件的文本输入字段,并且该字段已禁用 Ctrl-V(粘贴)。 问题:什么油猴

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.