Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将信息从JavaScript传递到AutoIt_Javascript_Jquery_Google Chrome_Web_Autoit - Fatal编程技术网

将信息从JavaScript传递到AutoIt

将信息从JavaScript传递到AutoIt,javascript,jquery,google-chrome,web,autoit,Javascript,Jquery,Google Chrome,Web,Autoit,是否有一种方法可以将JavaScript与AutoIt连接起来,以便JavaScript将数据(以及要处理的参数)传递给AutoIt 实际上,我正在使用JavaScript获取网页上的鼠标坐标。现在我想动态地将这些鼠标坐标传递给AutoIt脚本 最初我想用JavaScript动态保存一个txt文件,并从AutoIt读取它。但正如您所知,您无法使用客户端JavaScript(或jQuery)保存txt文件 请建议解决此问题的方法。另一种方法是安装本地web服务器,然后通过HTTP将任何数据从jav

是否有一种方法可以将JavaScript与AutoIt连接起来,以便JavaScript将数据(以及要处理的参数)传递给AutoIt

实际上,我正在使用JavaScript获取网页上的鼠标坐标。现在我想动态地将这些鼠标坐标传递给AutoIt脚本

最初我想用JavaScript动态保存一个txt文件,并从AutoIt读取它。但正如您所知,您无法使用客户端JavaScript(或jQuery)保存txt文件


请建议解决此问题的方法。

另一种方法是安装本地web服务器,然后通过HTTP将任何数据从javascript传递到本地web服务器,在web服务器上的CGI脚本(或类似脚本)中执行AutoIt


只需注意如何设置web服务器、禁止远程连接或通过防火墙隔离远程连接,因为您可能不希望其他计算机执行AutoIt脚本

您可以通过附加到浏览器窗口来完成此操作。 这样,autoit就可以“查看”或操纵页面上的所有内容


当您说要将javascript返回的坐标传递给AutoIT时,请看or

,我假设这是因为您想对它们执行某些操作,只有AutoIT可以帮助您。 这与这个小小的UDF的作者在他说

我想知道是否可以将jQuery“插入”到IE页面中,然后调用富jQuery API来选择DOM元素。这将大大减少AutoIt脚本中的行数

下面给出了一组基本教程

  • 将文本设置为按钮
  • 将文本设置为输入文本
  • 提交谷歌搜索
  • 按类搜索筛选只获取结果URL
参考:


我可以安装AutoIt扩展,但无法启用它,因为它在Chrome Web Store上不可用。米洛斯有什么想法吗?也许用IE来代替?我得做很多事情,比如WebGL和其他东西。艾美?Meh.IE automation with autoit是迄今为止最完整、最简单的浏览器自动化。不需要任何扩展或任何外部“助手”来操作页面。对于IE UDF上的每个函数,在AutoIt帮助文件中提供完整的帮助支持。
Global $objAppIE, $jQuery, $jQueryFilePath = @ScriptDir & '\jquery-1.9.1.js'
Global $oMyError = ObjEvent ( 'AutoIt.Error', '_MyErrFunc' )

If Not FileExists ( $jQueryFilePath ) Then InetGet ( 'http://code.jquery.com/jquery-1.9.1.js', $jQueryFilePath )
$objAppIE = ObjCreate ( 'InternetExplorer.Application' )
$objAppIE.visible = True
$objAppIE.navigate ( 'http://www.google.com/' )

$jQuery = _InsertJQuery ( $objAppIE )
If IsObj ( $jQuery ) Then
    $jQuery ( ':input[id="gbqfba"]' ).text ( 'Search With Bing' ) ; **set text button**
    Sleep ( 1000 ) ; just for see changes
    $jQuery ( ':input[id="gbqfq"]' ).val ( 'autoit' ) ; **set input text**
    Sleep ( 1000 ) ; just for see changes
    $jQuery ( ':input[id="gbqfba"]' ).submit ( ) ; submit
    _IEPageLoadWait ( $objAppIE )
    Do
        $aLinks = $jQuery ( '.l' ).get ( ) ; **filtering by class for get only results urls.**
    Until $aLinks.length
    ConsoleWrite ( '! Results Nb : ' & $aLinks.length & @Crlf )
    $i=0
    For $aLink In $aLinks
        $i+=1
        ConsoleWrite ( '+ ' & $i & ' $aLink.href : ' & $aLink.href & @Crlf )
    Next
EndIf

Func _InsertjQuery ( $objAppIE )
    Local $objWindow, $objHead, $objScript
    _IEPageLoadWait ( $objAppIE )
    If IsObj ( $objAppIE ) Then
        $objWindow = $objAppIE.document.parentWindow
        $objHead = $objAppIE.document.getElementsByTagName ( 'head' ).item ( 0 )
        If Not IsObj ( $objwindow.jQuery ) Then
            $objScript = $objAppIE.document.createElement ( 'script' )
            $objScript.type = 'text/javascript'
            $objScript.language = 'javascript'
            $objScript.defer = 'defer'
            $Script = FileRead ( $jQueryFilePath )
            $objScript.text = $Script
            $objHead.appendChild ( $objScript )
            While Not ( IsObj ( $objwindow.jQuery ) )
                Sleep ( 100 )
            WEnd
            $objwindow.jQuery.noConflict ( )
        EndIf
        Return $objwindow.jQuery
    EndIf
EndFunc ;==> _InsertjQuery ( )

Func _IEPageLoadWait ( $objAppIE )
    Do
        Sleep ( 50 )
    Until $objAppIE.readyState = 'complete' Or $objAppIE.readyState = 4
    Do
        Sleep ( 50 )
    Until $objAppIE.document.readyState = 'complete' Or $objAppIE.document.readyState = 4
    Do
        Sleep ( 50 )
    Until Not $objAppIE.busy
EndFunc ;==> _IEPageLoadWait ( )

Func _MyErrFunc ( )
    $HexNumber = Hex ( $oMyError.number, 8 )
    If $HexNumber = 80020006 Then Return
    Msgbox ( 0, '', 'We intercepted a COM Error !' & @CRLF & 'Number is: ' & $HexNumber & @CRLF & 'Windescription is: ' & $oMyError.windescription & @CRLF & 'Line Number: ' & $oMyError.scriptLine & @CRLF, 3 )
    Exit
Endfunc ;==> _MyErrFunc ( )