【问题标题】:How to automatically press ENTER key/Confirm alert box with javascript/jquery如何使用 javascript/jquery 自动按 ENTER 键/确认警报框
【发布时间】:2012-12-16 20:08:34
【问题描述】:

我正在编写一个用户脚本(javascript/jquery)来自动化浏览器游戏中的一些事情。有一个拍卖可以以折扣价购买产品。我想要一个有33%折扣时自动购买商品的脚本。

脚本在拍卖的 url (greasemonkey) 上运行,然后检查是否有至少 33% 折扣的产品 - 如果是这样,那么它将按下该行中的按钮来购买产品。

我现在面临的问题是:按下按钮后,您必须通过警告框确认您要购买商品。有没有办法实现自动化?

我用谷歌搜索并检查了 stackoverflow,人们说 javascript/jquery 不可能。真的是这样吗?这意味着在我正在玩的浏览器游戏中自动购买商品基本上是不可能的。我正在考虑让脚本自动按 ENTER,因为这与在警报框中单击“确定”相同。但他们说那也是不可能的。所以现在我想知道:有没有办法自动化这个?

这是按钮后面的代码:

<input id="buybutton_3204781" class="button" type="button" onclick="if(confirm('Wil je deze producten kopen?')){document.submitForm.BuyAuctionNr.value=3204781; document.submitForm.submit();}{return false;}" value="Kopen">

编辑:

万岁,它可以通过更改按钮的属性 onClick 来工作! 这是使用的代码:

$('元素').attr('一些属性','一些属性值');

现在可以关闭了,非常感谢大家,感谢您的帮助!!

【问题讨论】:

  • 当浏览器窗口中出现alert box or prompt box 时,它是requires 用户交互,无法用javascript 或jquery 模拟。您将需要找到解决此问题的新方法。
  • 看看更好的工具:seleniumhq.org
  • 您确定打开确认对话框的原始源代码了吗?你能用你自己的函数覆盖这个行为吗?这是为了让greasemonkey 脚本更改特定浏览器游戏的某些行为,对吧?您确定要“自动单击确定”还是不想让确认出现在首位?不确定“浏览器自动化”是否是您在这里寻找的内容......
  • 嘿,这是按钮后面的代码: 也许我可以更改 onclick 属性,使其不会弹出确认框首先执行功能?

标签: javascript jquery userscripts


【解决方案1】:

根据浏览器的不同,可能会覆盖window.confirm等

(function() {
   'use strict';

    // Might was well save this in case you need it later
    var oldConfirm = window.confirm;
    window.confirm = function (e) {
        // TODO: could put additional logic in here if necessary
        return true;
    };

} ());

我没有进行任何广泛的测试,但我至少能够在 firebug 中覆盖 window.alert 和 window.confirm。

请注意,如果他们的脚本已经获得对警报/确认的引用(例如 var a = window.confirm; a('herp');),这对您没有帮助

另一种方法是覆盖您自动单击的按钮的功能,或使用某些 xhr 手动发出 AJAX / POST。

【讨论】:

  • 感谢您的回答,我也会花时间尝试一下。
【解决方案2】:

使用 JavaScript,您可以随意更改 HTML 和 JavaScript 代码。

我建议更改 OnClick 函数,以便

<input id="buybutton_3204781" class="button" type="button" 
onclick="
if(confirm('Wil je deze producten kopen?'))
{
    document.submitForm.BuyAuctionNr.value=3204781; 
    document.submitForm.submit();
}
{
    return false;
}" value="Kopen">

变成了

<input id="buybutton_3204781" class="button" type="button" 
    onclick=
    "document.submitForm.BuyAuctionNr.value=3204781; 
     document.submitForm.submit();" 
value="Kopen">

【讨论】:

    【解决方案3】:

    不用改变太多你可以试试这个

    $(".button").each(function() {
      if (this.id.indexOf("buybutton")!=-1) this.onclick=function() {
        document.submitForm.BuyAuctionNr.value=this.id.replace("buybutton_","");
        document.submitForm.BuyAuctionNr.submit();
      } 
    });
    

    我使用this和onclick是因为我想替换现有的onclick处理程序,而不是添加一个

    如果您只是想购买,请获取 ID 并使用您的用户脚本提交表单

    因为我不知道你是怎么知道折扣的,所以可以举个例子

    $(".button").each(function() {
      if (this.id.indexOf("buybutton")!=-1) {
        var ID = this.id.replace("buybutton_","");
        if ($("#discount_"+ID).val()<30) {
          document.submitForm.BuyAuctionNr.value=ID;
          document.submitForm.BuyAuctionNr.submit();
        }
      } 
    });
    

    哪个会提交它找到的第一个。将 submit 替换为 $.get 或 post 以提交所有打折的东西

    【讨论】:

    • 我会尝试,虽然我不完全理解它,但那是因为我是 jquery/javascript 的新手,它仍然让我有点困惑。 (或者可能是因为我需要经常练习编程):) 非常感谢!
    • 我用类按钮遍历所有对象,如果我找到一个购买按钮,我将需要确认的处理程序替换为不需要的脚本
    【解决方案4】:

    你必须用jquery modal替换原来的系统alert才能达到这样的要求。

    下面是介绍jquery modal的教程:

    http://www.jacklmoore.com/notes/jquery-modal-tutorial

    【讨论】:

    • “jquery modal”?我认为 OP 希望避免所有“确认”对话框,即使问题是“如何自动单击确定”。
    • 另外我认为OP是他所说的应用程序的开发者!他当然可以避免它们,但我向他提到了另一种替换 alert() 和 confirm() 方法的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2015-07-13
    • 2011-08-10
    • 2019-03-11
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多