Function Reference


_IEHeadInsertEventScript

Inserts a Javascript into the Head of the document

#include <IE.au3>
_IEHeadInsertEventScript ( ByRef $oObject, $sHTMLFor, $sEvent, $sScript )

Parameters

$oObject Object variable of an InternetExplorer.Application, Window or Frame object
$sHTMLFor The HTML element for event monitoring (e.g. "document", "window" or an element ID)
$sEvent The event to monitor (e.g. "onclick" or "oncontextmenu")
$sScript Javascript string to be executed

Return Value

Success: 1.
Failure: 0 and sets the @error flag to non-zero.
@error: 2 ($_IEStatus_COMError) - COM Error in Object reference
3 ($_IEStatus_InvalidDataType) - Invalid Data Type
@extended: Contains invalid parameter number

Remarks

Using ObjEvent(), AutoIt is able to be notified of events via COM, but it manages them asynchronously (rather than synchronously as they are handled in the browser context).
This routine allows you to inject code that is managed inside the browser context.

Note that elements that do not have an ID assigned can still be used by obtaining their "uniqueID" property with _IEPropertyGet()

Related

_IEDocInsertHTML, _IEDocInsertText, _IEPropertyGet

Example

Example 1

; Open a browser with the basic example page, insert an
; event script into the head of the document that creates
; a JavaScript alert when someone clicks on the document

#include <IE.au3>

Local $oIE = _IE_Example("basic")
_IEHeadInsertEventScript($oIE, "document", "onclick", "alert('Someone clicked the document!');")

Example 2

; Open a browser with the basic example page, insert an
; event script into the head of the document that creates
; a JavaScript alert when someone tries to right-click on the
; document and then the event script returns "false" to prevent
; the right-click context menu from appearing

#include <IE.au3>

Local $oIE = _IE_Example("basic")
_IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "alert('No Context Menu');return false")

Example 3

; Open a browser with the basic example page, insert an
; event script into the head of the document that creates a
; JavaScript alert when we are about to navigate away from the
; page and presents the option to cancel the operation.

#include <IE.au3>

Local $oIE = _IE_Example("basic")
_IEHeadInsertEventScript($oIE, "window", "onbeforeunload", _
        "alert('Example warning follows...');return 'Pending changes may be lost';")
_IENavigate($oIE, "www.autoitscript.com")

Example 4

; Open a browser with the basic example page, insert an
; event script into the head of the document that prevents
; selection of text in the document

#include <IE.au3>

Local $oIE = _IE_Example()
_IEHeadInsertEventScript($oIE, "document", "ondrag", "return false;")
_IEHeadInsertEventScript($oIE, "document", "onselectstart", "return false;")

Example 5

; Open a browser with the AutoIt homepage, insert an
; event script into the head of the document that prevents
; navigation when any link is clicked and log the URL of the
; clicked link to the console

#include <IE.au3>

Local $oIE = _IECreate("http://www.autoitscript.com")

Local $oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    Local $sLinkId = _IEPropertyGet($oLink, "uniqueid")
    If @error Then Exit
    _IEHeadInsertEventScript($oIE, $sLinkId, "onclick", "return false;")
    If @error Then Exit
    ObjEvent($oLink, "_Evt_")
Next

; idle as long as the browser window exists
While WinExists(_IEPropertyGet($oIE, "hwnd"))
    Sleep(100)
WEnd

Func _Evt_onClick()
    Local $o_Link = @COM_EventObj
    ConsoleWrite($o_Link.href & @CRLF)
EndFunc   ;==>_Evt_onClick