我正在使用 TChromium 组件在 Delphi XE4 中开发一个桌面应用程序来显示 Google Voice 网页。
我需要以编程方式开始调用,但找不到触发按钮后面的 javascript 代码的方法(它是一个 DIV)“CONNECT”:
TChromium 允许执行 javascript 代码,我已经设法使用 javascript 代码模拟“CALL”按钮上的点击,该代码使用显示面板的字符“c”模拟按键事件。这是有效的,因为谷歌语音有快捷方式,“c”是开始通话的有效快捷方式。我还可以使用 javascript 在输入字段中设置数字。我的主要问题是我不知道如何模拟点击“CONNECT”:
如您所见,没有 ID,没有 onClick,也没有触发连接按钮的快捷方式。
我可以使用以下代码获取对此 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 代码来执行此操作。
欢迎提出任何建议!
最佳答案
我建议下一个解决方案。
在必须从 View 导入的 javascript 文件中,放入下一个代码:
$(".goog-button-base-content").click(function(){
//CODE HERE
});
你在这里所做的是,每次我们按下具有该类的 div 时,你将启动“CODE HERE”中的逻辑
(抱歉我的英语不好)
希望有用。再见
关于javascript - 模拟点击DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175963/