用户脚本:自动按下没有ID的按钮,只需重新加载页面一次

时间:2016-06-09 08:26:58

标签: javascript userscripts

所以我试图为Tampermonkey创建一个以Crome为目标的用户脚本。

我想要做的是自动按下按钮。然而,有些事情使得这比我通常做的更复杂。

  1. 当按钮被激活时,它会向网站发布一个公式,并刷新网站,我只想按下按钮
  2. 我不知道桌子的名称/ ID。
  3. 我的脚本包含多个页面,因此我必须具体说明按钮的ID,以便它不会在错误的页面上执行。
  4. 通常我会使用:

    $("select[name=#MyTablename]").val("10");
    document.forms[0].submit();
    

    这是我想要访问的代码:

    <input type="submit" class="button" value="List Airports">
    

    我想知道正确的做法是通过xpath

    进行访问
    //*[@id="body"]/input[4]
    

    或通过选择器

    #body > input:nth-child(11)
    

    如何保证脚本只在我希望使我的脚本处于活动状态的域中的几个子页面上运行。

    另外,在自动点击后重新加载页面时,如何阻止脚本反复执行。 (我只想在每次访问页面时点击一次按钮)

1 个答案:

答案 0 :(得分:0)

1。 您可以使用GM_setValue和GM_getValue来确保已经单击了按钮。例如:

// Don't forget to include that in your // == UserScript== at the beinning of the script. 
// To learn more about these metadata here: https://wiki.greasespot.net/Metadata_Block

// @grant  GM_getValue
// @grant  GM_setValue
// ==/UserScript==

然后用它来提交表单(一定要包含jQuery!):

if (!GM_getValue("foo") {
    GM_setValue("foo", "bar");
    $("input[type='submit'][value='yourvalue']").click();
}

不要忘记设置一个实际重置值的按钮,否则它只会运行一次。

  1. 如果页面上没有其他表格,您可以使用$(“table”)。
    1. 请参阅1.,您还可以阅读以下内容:https://api.jquery.com/category/selectors/
相关问题