【问题标题】:AutoHotKey JavaScript LinkAutoHotKey JavaScript 链接
【发布时间】:2014-12-10 05:07:22
【问题描述】:

我不熟悉 JavaScript 和 Web 开发,因为我的经验主要是 Java 和 C++,而且我什至是新手。我正在使用 AutoHotKey 为我工作的公司自动输入数据,为了进入填写新项目的表格,我必须单击一个链接。当链接都具有href 值的 URL 时,我没有问题,但现在我遇到了一个 JavaScript 链接,我不知道如何单击它......这是代码链接。

<a href="javascript:" 
tabindex="7"
onclick="this.parentNode.parentNode._skip=true;$find('ctl00_MainContent_view1Extender').executeAction('ActionBar',0,null,0);return false;"
onfocus="$showHover(this,&quot;ctl00_MainContent_view1Extender$0$ActionGroup$0&quot;,&quot;ActionGroup&quot;,2)" 
title="New Reimbursement" 
onblur="$hideHover(this)">New Reimbursement</a>

尽管谷歌搜索了一天,但我不确定如何处理它。

提前致谢!

【问题讨论】:

  • 你是如何点击它的?
  • 我尝试通过wb.document.links[x].href 找到它,这样我就可以通过wb.Navigate 找到它
  • 我也试过复制粘贴javascript:(onClick text)
  • 不知何故你需要运行onclick 事件,href 什么都不做。可以在DOM节点上调用.click()触发点击事件吗?
  • 嗯。我想我应该调查一下。我遇到的问题是该元素没有 id...所以我不知道如何引用它。

标签: javascript html autohotkey


【解决方案1】:

获得没有 ID 或名称的元素的方法不止一种,但其中一种简单的方法是遍历页面上的元素,直到找到所需的元素。

示例函数:

LoopElements(Elements, String, attribute="title")
{
try
Loop % Elements.Length ; check each element
    If instr((Elements[A_Index-1])[Attribute], String) ; if the Attribute text is what we need
        return Elements[A_Index-1] ; return Element
}

.click() 方法大部分时间都可以工作,但在最新版本的 IE 中,我发现需要使用其他方法,如 dispatchEvent 来创建 mouseevent 对象

用法示例:

site := "ahkscript.org"

wb := ComObjCreate("InternetExplorer.Application")
wb.visible := true
wb.navigate(site)

while wb.readyState!=4 || wb.document.readyState != "complete" || wb.busy
    continue

links := wb.document.getElementsByTagName("A")

linkElement := LoopElements(links, "GNU General Public License", "innertext")

if (linkElement)
{
    msgbox % "Element found it was #" linkElement.sourceindex "`n`nLets click it!"
    linkElement.click()
}
else
    msgbox % "no Element found"
return



LoopElements(Elements, String, attribute="title")
{
try
Loop % Elements.Length ; check each element
    If instr((Elements[A_Index-1])[Attribute], String) ; if the Attribute text is what we need
        return Elements[A_Index-1] ; return Element
}

您也可以调用 onclick 事件正在执行的函数,但请先尝试此操作,然后您可以根据需要尝试其他方式...

希望对你有帮助

【讨论】:

  • 我在运行我的脚本时遇到了“拒绝访问”错误,指向我执行.click() 的行我将用你的方法运行它,看看它是否有效。谢谢(你的)信息。我会回来报告的。
  • 宝贝耶稣,它有效。谢谢你的帮助!!!我可能会在不久的将来回到这里。我希望你会在身边。 }:)
猜你喜欢
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
相关资源
最近更新 更多