【问题标题】:Simulate click on DIV模拟点击DIV
【发布时间】:2013-08-11 19:41:53
【问题描述】:

我正在使用 TChromium 组件在 Delphi XE4 中开发一个桌面应用程序来显示 Google Voice 网页。

我需要以编程方式开始调用,但我找不到触发按钮(它是 DIV)“CONNECT”后面的 javascript 代码的方法:

TChromium 允许执行 javascript 代码,我已经设法使用 javascript 代码模拟单击“CALL”按钮,该 javascript 代码使用显示面板的字符“c”模拟键事件。这是因为 Google Voice 有快捷方式,而“c”是开始通话的有效快捷方式。同样使用 javascript 我可以在输入字段中设置数字。我的主要问题是我不知道如何模拟点击“CONNECT”:

如你所见,没有ID,没有onClick,也没有触发Connect按钮的快捷方式。

我可以使用以下代码获得对此 DIV 的引用:

document.getElementById(":87.mi").children[0].children[0].children[5].children[1].children[0].children[0].children[0].children[1];

但是不可能触发任何附加 .click() 的内容。我认为这是因为 click() 将触发未定义的 onClick 方法。有什么方法可以知道当有人点击这个 div 时执行的 javascript 代码是什么?

如果焦点在“要呼叫的号码”输入中,我可以按“TAB”导航到“要拨打的电话”,然后导航到“记住选择”,最后导航到“连接”,我可以按 Enter让它工作的关键。我尝试使用与开始时相同的代码来模拟 CALL 按钮,但这次使用 TAB(键码 9 而不是 67)并且它不起作用,因为焦点没有移动。

我尝试使用 delphi 以编程方式执行此操作,还使用 ​​mouse_event、keybd_event、PostKeyExHWND、PostKeyEx32 和 PostMessage,但没有结果,因为焦点不会从“要调用的号码”移开

目前唯一可行的选项是使用 SetCursorPos 使用 delphi 移动鼠标并模拟单击该按钮来计算坐标,但这将是我选择的最后一个选项,因为我希望使用 javascript 代码来执行此操作。

欢迎提出任何建议!

【问题讨论】:

  • 相比 jQuery,您更喜欢原生 JS 解决方案?你有可用的控制台吗?事件是否通过document.getElementsByClassName('goog-button-base-content')[0].click() 触发?
  • 我认为 JQuery 不包含在此网页中。如果可以动态包含它就可以了。此网页的链接是google.com/voice,但您必须在美国并首先注册一个电话号码。
  • 那我退出这个游戏了...所以至少我会添加一个指向the question 的链接,以寻求最正确的解决方案,使用官方 API 进行这项服务。跨度>
  • 注意:服务条款规定您不得“重新格式化或构筑属于 Google 语音服务一部分的网页的任何部分。”
  • 是的,您为什么不向 Google 寻求帮助,了解如何将他们的服务放入您的桌面应用程序中!!

标签: javascript delphi tchromium


【解决方案1】:

我建议下一个解决方案。

在必须从视图中导入的 javascript 文件中,输入下一段代码:

$(".goog-button-base-content").click(function(){
  //CODE HERE
});

您在这里所做的是,每次我们按下具有该类的 div 时,您都会在“CODE HERE”中启动逻辑

(对不起,我的英语不好)

希望有用。再见

【讨论】:

    猜你喜欢
    • 2012-07-30
    • 2015-04-13
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2021-01-04
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多