我一直在使用Autohotkey访问网页上的一些元素,我可以使用:wb.document.elements [x] .forms [x] .value并将其分配给一个值。我很抱歉,但我对Javascript的了解非常有限。
最近我查看了该页面的代码并注意到以下内容:
<script type="text/javascript" defer="defer">
form = new ActiveForm('EditingServiceInformationforSOMEGUY','Editing Service Information for SOME GUY');
data = {};
data.header = ["addressid", "contactid", "address1", "address2", "city", "state", "zip"];
data.body = [["275101010", "254101010", "1001 Maudlin", "Apt. 1774", "Beverly Hills", "CA", "90210"]];
我尝试通过AHK访问data.body部分失败了。如果我在查看页面时输入地址栏:
javascript: alert(data.body[0])
我收到一个消息框,其中data.body值以逗号分隔。
我似乎无法通过Autohotkey复制此内容。我尝试了很多不同的语法,但我在这里遗漏了一些东西。我想得到一个与我在Javascript Alert中看到的值相同的msgbox,然后从那里进一步操作它们。
我在我的脚本中尝试了很多不同的组合来显示data.body作为逗号分隔变量的列表,但似乎无法正确触发它。
我目前的AHK代码如下,尝试分配tempvar的行是我无法正确的行。
Settitlematchmode, 2
WinGetTitle, Webstring, Title of the page
wb := IEGet(Webstring)
tempvar := wb.document(data.header[0])
msgbox % tempvar . "|" . Isobject(tempvar)
IEGet(Name:="") {
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame
Name := ( Name="New Tab - Windows Internet Explorer" ) ? "about:Tabs"
: RegExReplace( Name, " - (Windows|Microsoft) Internet Explorer" )
For wb in ComObjCreate( "Shell.Application" ).Windows
If ( wb.LocationName = Name ) && InStr( wb.FullName, "iexplore.exe" )
Return wb
}
答案 0 :(得分:0)
@ vasili111处在正确的轨道上。试试这个:
Settitlematchmode, 2
WinGetTitle, Webstring, Title of the page
wb := IEGet(Webstring)
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}" ; IID_IHTMLWindow2
window := ComObj(9,ComObjQuery(wb,IID,IID),1)
tempvar := window.data.header.0
; or use
;tempvar := window.eval("data.header[0]")
msgbox % tempvar . "|" . Isobject(tempvar)
IEGet(Name:="") {
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame
Name := ( Name="New Tab - Windows Internet Explorer" ) ? "about:Tabs"
: RegExReplace( Name, " - (Windows|Microsoft) Internet Explorer" )
For wb in ComObjCreate( "Shell.Application" ).Windows
If ( wb.LocationName = Name ) && InStr( wb.FullName, "iexplore.exe" )
Return wb
}