Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Fires when the readyState
method changes.
Inline HTML | <ELEMENT onreadystatechange = "handler" ... > |
All platforms |
Event property | object.onreadystatechange = handler |
Microsoft® JScript® (compatible with ECMA 262 language specification) only |
Named script | <SCRIPT FOR = object EVENT = onreadystatechange> |
Microsoft Internet Explorer only |
JScript Syntax
oXMLDOMDocument.onreadystatechange;
Example
The following JScript and HTML example demonstrates the sequence of ready states when asynchronously loading a document.
<script>
var xmldoc;
function Load()
{
xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xmldoc.onreadystatechange = CheckState;
xmldoc.load(URL.value);
}
function CheckState()
{
var state = xmldoc.readyState;
RESULTS.innerHTML += "readyState = " + state + "<BR>"
if (state == 4)
{
var err = xmldoc.parseError;
if (err.errorCode != 0)
RESULTS.innerHTML += err.reason + "<BR>"
else RESULTS.innerHTML +="success" + "<BR>"
}
}
</script>
URL: <input type=text size=60 id=URL>
<input type=button value=LOAD onclick="jscript:Load()">
<div id=RESULTS style= "color:red;font-weight:bold;"></div>
C/C++ Syntax
HRESULT onreadystatechange(void);
C/C++ Return Values:
Return Values
S_OK
The value returned if successful.
Example
BEGIN_DISPATCH_MAP(CXMLDOMSamples, CCmdTarget)
DISP_FUNCTION_ID(CXMLDOMSamples, "Ready State Event Handler",
DISPID_XMLDOMEVENT_ONREADYSTATECHANGE, DOMDocCheckState, VT_EMPTY, 0)
END_DISPATCH_MAP()
class CXMLDOMSamples : public CCmdTarget
{
private:
HRESULT m_hr;
IXMLDOMDocument* m_pIXMLDOMDocument;
BSTR m_bstrXMLDocName;
DWORD m_pdwCookie;
public:
BOOL AdviseConnectionPoint(BOOL bAdvise = TRUE);
void Caller();
BOOL DOMDocLoadLocation();
BOOL DOMDocStateChangeSetup();
void DOMDocCheckState();
};
// Assumptions
// m_pIXMLDOMDocument has already been initialized (a DOMDocument
// object has been created).
// Automation is enabled for the class to enable it to connect
// to the Connection point (DIID_XMLDOMDocumentEvents).
void CXMLDOMSamples::Caller()
{
try
{
m_bstrXMLDocName = ::SysAllocString(_T("http://MyServer/sample.xml"));
DOMDocStateChangeSetup();
DOMDocLoadLocation();
::SysFreeString(m_bstrXMLDocName);
m_bstrXMLDocName = NULL;
}
catch(...)
{
if(m_bstrXMLDocName)
::SysFreeString(m_bstrXMLDocName);
DisplayErrorToUser();
}
}
BOOL CXMLDOMSamples::AdviseConnectionPoint(BOOL bAdvise)
{
BOOL bResult = FALSE;
try
{
IConnectionPointContainer *pIConnectionPointContainer = NULL;
IConnectionPoint *pCP = NULL;
m_hr = m_pIXMLDOMDocument->QueryInterface
(IID_IConnectionPointContainer,(void**)&pIConnectionPointContainer);
SUCCEEDED(m_hr) ? 0 : throw m_hr;
If(pIConnectionPointContainer)
{
m_hr = pIConnectionPointContainer->FindConnectionPoint
(DIID_XMLDOMDocumentEvents, &pCP);
SUCCEEDED(m_hr) ? 0 : throw m_hr;
if(SUCCEEDED(m_hr) && pCP)
{
if(bAdvise)
m_hr = pCP->Advise(GetIDispatch(TRUE), &m_pdwCookie);
else
m_hr = pCP->Unadvise(m_pdwCookie);
bResult = SUCCEEDED(m_hr) ? TRUE : FALSE;
pCP->Release();
pCP = NULL;
}
pIConnectionPointContainer->Release();
pIConnectionPointContainer = NULL;
}
}
catch(...)
{
if(pIConnectionPointContainer)
pIConnectionPointContainer->Release();
if(pCP)
pCP->Release();
DisplayErrorToUser();
}
return bResult;
}
BOOL CXMLDOMSamples::DOMDocStateChangeSetup()
{
BOOL bResult = FALSE;
try
{
m_hr = m_pIXMLDOMDocument->put_async(VARIANT_TRUE);
SUCCEEDED(m_hr) ? 0 : throw m_hr;
bResult = AdviseConnectionPoint();
}
catch(...)
{
DisplayErrorToUser();
}
return bResult;
}
BOOL CXMLDOMSamples::DOMDocLoadLocation()
{
short sResult = FALSE;
BOOL bResult = FALSE;
try
{
_variant_t varString = m_bstrXMLDocName;
m_hr = m_pIXMLDOMDocument->load(varString, &sResult);
bResult = SUCCEEDED(m_hr) ? TRUE : FALSE;
}
catch(...)
{
DisplayErrorToUser();
}
return bResult;
}
void CXMLDOMSamples::DOMDocCheckState()
{
IXMLDOMParseError *pIParseError = NULL;
long value;
try
{
m_hr = m_pIXMLDOMDocument->get_readyState(&value);
SUCCEEDED(m_hr) ? 0 : throw m_hr;
if(value == 4 )
{
m_hr = m_pIXMLDOMDocument->get_parseError(&pIParseError);
SUCCEEDED(m_hr) ? 0 : throw m_hr;
m_hr = pIParseError->get_errorCode(&value);
pIParseError->Release();
pIParseError=NULL;
if(!SUCCEEDED(m_hr))
{
throw m_hr;
}
m_strOutput = (value != 0) ? _T("Load Error") : _T("Load
Succeeded");
}
}
catch(...)
{
if(pIParseError)
pIParseError->Release();
DisplayErrorToUser();
}
}
Remarks
This event can be explicitly set using the onreadystatechange
property.
This member is an extension of the Worldwide Web Consortium (W3C) Document Object Model (DOM).
Versioning
Implemented in: MSXML 3.0 and MSXML 6.0