当前位置: 首页 > 面试题库 >

在同一页面上多次运行Greasemonkey脚本?

澹台季萌
2023-03-14
问题内容

我完全不熟悉Greasemonkey,JavaScript,实际上是所有UI东西。

要求:页面加载后,用户脚本由GS运行一次。但是,我需要多次运行同一脚本而不刷新

用例:例如,Amazon.com搜索使用Ajax进行。我需要在搜索结果中嵌入自定义元素。

每次在同一页面上进行搜索时,我都需要将内容和结果一起注入到search-results-div中(没有页面刷新)

我当前的脚本仅在页面刷新时运行。

我希望以上解释清楚。请帮忙。


问题答案:

最简单,最可靠的方法是使用waitForKeyElements()实用程序

这是一个使用jQuery并更改Amazon搜索结果的 完整脚本waitForKeyElements

// ==UserScript==
// @name     _Amazon Search, alter results
// @include  http://www.amazon.com/s/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

function addCustomSearchResult (jNode) {
    //***** YOUR CODE HERE *****
    jNode.prepend (
        '<div id="result_000" class="fstRow">Buy my stuff, instead!</div>'
    );
}

waitForKeyElements ("#atfResults", addCustomSearchResult);


 类似资料:
  • 我想用selenium来刮一个网页。检查页面并右键单击所建议的XPath属于不稳定类型(/html/body/table[2]/tbody/tr[1]/td/form/table/tbody/tr[2])。因此,我尝试了以下解决方案: 甚至 不要返回任何结果。但是,在本页的前面部分,我可以获得: 似乎在: 我再也无法到达任何元素。如何确定正确的XPath?建议脚本中的部分不可能解析。然而,我所追求

  • 问题内容: 我公司购买了一种在页面上呈现ASP.NET控件的产品。该控件使用jQuery 1.2.3并将脚本标记添加到页面以引用它。如果控件以任何方式修改(包括修改以引用其他版本的jQuery),则控件的开发人员将不支持使用该控件。 我将要开始开发自己的控件,并希望使用jQuery 1.3的功能和速度改进。这两个控件都需要存在于同一页面上。 如何允许购买的控件使用jQuery 1.2.3和新的自定

  • 问题内容: 我有一个Greasemonkey脚本,可以在Firefox和Opera中正常工作。但是,我很难使它在Chrome中工作。问题是将一个函数注入页面,该函数可以由页面中的代码调用。到目前为止,这是我正在做的事情: 首先,我获得了针对Firefox的unsafeWindow的帮助程序参考。这使我可以为FF和Opera(和Chrome,我认为)具有相同的代码。 接下来,我将一个函数注入页面。它

  • 问题内容: 我正在处理用户脚本,但我发现当主页发出AJAX请求时,该脚本未运行。 有什么方法可以在主页加载和AJAX请求上触发用户脚本? 问题答案: 在AJAX请求上重新运行脚本代码的明智方法是,专注于页面的关键部分并检查更改。 例如,假设页面包含如下所示的HTML: 并且您希望脚本对每个注释进行处理。 现在,您 可以 拦截所有AJAX调用, 或者侦听 (不建议使用)或使用s,但是这些方法可能会变

  • 问题内容: 我想运行一些命令,直到按Ctrl-C才会退出。是否可以运行一次即可运行所有这些程序,而Ctrl-C会全部退出它们?他们可以共享终端输出。 具体来说,我有罗盘编译器,coffeescript编译器和一个自定义命令,用于监视文件更改,所有命令都在运行以监视文件更改。我不想为每个命令加载一个终端。 问题答案: 该bash脚本适用于N个并行线程。每个参数都是一个命令。 捕获SIGINT时将杀死

  • 我想用不同的预请求脚本多次运行相同的请求?不使用数据驱动(CSV)测试,我能做什么? 例如,我必须多次运行下面的GET url(每2分钟一次),但每当我运行它时,我都需要进行不同的预请求测试! {{url}}/legacy/COL 在此处输入图像描述