问题标签 [greasemonkey]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何向我的页面的 Javascript 提供 Greasemonkey 的 GM_xmlhttpRequest 的有限接口?
我有一个 Greasemonkey 用户脚本,它通过插入<script>
如下标签在非特权上下文中运行其大部分代码:
这避免了使用unsafeWindow
.
但是,我的代码需要从另一个不支持 JSONP 的域上的 API 获取信息。 GM_xmlhttpRequest
可以访问其他域,但仅在特权 Greasemonkey 上下文中可用。
我想编写一个函数,它提供了一个有限的接口并准确地进行了我需要使用的 API 调用GM_xmlhttpRequest
,然后将该(理论上安全的)函数公开给正常的页面上下文。我的第一次尝试是这样的:
有趣的是,当我foo()
从页面上下文调用时,我看到“Foo!”、字符串化GM_xmlhttpRequest
和“Bar!” 在控制台日志中。但是,我从来没有在控制台或警报中得到响应。如果我GM_xmlhttpRequest
在 GM 上下文中自行创建,我会收到警报和日志消息。
问题是:我正在尝试做的事情是否可能?还是有另一种方法来完成同样的事情?
javascript - 为什么 jQuery 'nth-child' 选择器在 GreaseMonkey (0.8) 中不起作用?
我相信 jQuery 的 :nth-child 选择器在 GreaseMonkey 0.8 中不起作用。(底部是一个快速的 GM 脚本来测试它。)这是为什么?这是在 GreaseMonkey 内部工作的已知限制吗?任何人都可以推荐一种解决方法吗?
另外,为什么一些(绝对不是全部)jQuery 查询在 GreaseMonkey 中运行得慢得多,我现在没有快速的基准测试,但我经常注意到它,因为我正在构建一个非常复杂的依赖于 GM 脚本重度在通用汽车。我会在 GM 之外,在 Firebug 中运行我的代码,事情会变得很敏捷,而在 GM 内部,浏览器就会瘫痪。我知道这很模糊,但我想知道在 GM 或 jQuery 中是否存在一些广泛的架构原因,为什么会出现这种情况。
谢谢!
greasemonkey - 如何在fogbugz中使用greasemonkey脚本将文本框替换为由web服务填充的下拉列表?
当您将案例编辑为下拉列表时,我想替换fogbugz中的“客户端”字段文本框,而不是从单独的Web服务中填充,这将使我们的fogbugz中的客户端选项保持最新。这可能吗?他们在下拉菜单中选择的选项是否能够像他们在文本框中输入时一样保存?
greasemonkey - Opera 脚本和存储状态(如greasemonkey 中的GM_SetValue)
有没有办法在歌剧中存储用户脚本的状态?在 GreaseMonkey 中可以使用 GM_SetValue/GM_GetValue。我看到一个脚本在歌剧中使用 cookie 来模拟它们,但我不喜欢这个想法有几个原因(主要是因为 cookie 的大小有限)。还有另一种存储状态的方法吗?
javascript - 什么 JavaScript 对象复制函数适用于greasemonkey?
我知道这里还有一个与在 JavaScript 中复制对象有关的问题,但他们提供的代码不适用于油脂猴。从我能够追踪的情况来看,已接受答案的代码在以下行消失/停止:
有什么办法可以查看出了什么问题?
我没有必要为对象复制使用相同的功能,但我想要一些有用的东西。你知道一些功能吗?
javascript - Javascript 别名
我的目标是创建一种“Javascript 库”,如果你可以这样称呼的话。我打算在浏览网页时使用它来操作页面,将其作为greasemonkey 脚本动态加载。这个想法是让 " win
" 映射到window
、 " doc
" -> document
、 " win.loc
" ->win.location
和其他一些方便的映射,但你明白了。你能给我几个例子让我从中学习语法,我会推断其余的?非常感谢。
javascript - XPath 还是 querySelector?
XPath 可以做所有 querySelector 可以做的事情,甚至更多,那么你什么时候会选择后者呢?我还没有看到任何比较两者的速度基准,所以现在我根据语法简洁性进行选择,这似乎有点武断。
编辑:我可能应该说我正在为 Firefox 编写 Greasemonkey 脚本,所以我不担心跨浏览器的兼容性,并且宁愿不包含任何库。
javascript - JS 自动滚动
我曾经使用一个吉他标签网站,它有一个功能,你可以自动滚动你所在的页面。有一个固定的控制面板,无论屏幕滚动到页面的哪个位置,您都可以使用它来设置滚动速度并将其关闭。现在,我不记得它是哪个网站了,我也找不到它了(我找到了一个我很确定是它的网站,但它没有那个功能,所以他们可能已经摆脱了它,虽然我不知道他们为什么会这样做。
我的问题是: 我希望能够在greasemonkey 脚本中复制它,最好是通过jQuery 来实现X 浏览器的兼容性,这样它就可以在其他带有歌词、标签和排序的网站上使用。我怎样才能做到这一点?我将其设置为社区 wiki 模式,所以如果有人知道/找到我正在谈论的网站,请随时链接到它以供参考。
greasemonkey - 从 eval 执行 GM_xmlhttpRequest()
我有一个与(我的)服务器上的 servlet 通信的小 Greasemonkey 脚本。servlet 正在发回 JavaScript 代码,我在GM_xmlhttpRequest
.
到目前为止,一切正常。现在,我想使用GM_xmlhttpRequest
从该eval()
ed 代码中发送另一个。在这里我被困住了。我没有看到任何错误,但所有GM_*
功能似乎都无法在eval(responsetext)
.
GM_xmlhttpRequest
如果我在 onload 处理程序中硬编码(否eval()
),它工作正常。
xpath - Greasemonkey,XPath:查找表行中的所有链接
鉴于:
我需要匹配表格单元格中的每个 URI。关键字在整个文档中是一致的。我可以毫无问题地匹配整个文档的链接:
然而,即使我有一种简单的方法来引用 TR 节点,我似乎也无法找到正确的 XPath 来获取行中的链接。下面的片段似乎给了我第一个 TD 中的第一个链接,但不是其余的。帮助?
(其中“行”是上下文节点)。
编辑:也许我不清楚,我可以从文档级别找到链接就好了。我试图通过使用 TR 节点作为 XPath 的上下文来隔离单行中的链接。
编辑:解决方案,出于兴趣。我正在处理的损坏的标记没有 id 属性,所以我添加了一些并且能够继续。片段: