Search in sources :

Example 1 with HashChangeEvent

use of com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent in project htmlunit by HtmlUnit.

the class Document method createEvent.

/**
 * Implementation of the {@link org.w3c.dom.events.DocumentEvent} interface's
 * {@link org.w3c.dom.events.DocumentEvent#createEvent(String)} method. The method creates an
 * uninitialized event of the specified type.
 *
 * @see <a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-DocumentEvent">DocumentEvent</a>
 * @param eventType the event type to create
 * @return an event object for the specified type
 * @throws DOMException if the event type is not supported (will have a type of
 *         DOMException.NOT_SUPPORTED_ERR)
 */
@JsxFunction
public Event createEvent(final String eventType) throws DOMException {
    Class<? extends Event> clazz = SUPPORTED_DOM2_EVENT_TYPE_MAP.get(eventType);
    if (clazz == null) {
        clazz = SUPPORTED_DOM3_EVENT_TYPE_MAP.get(eventType);
        if (CloseEvent.class == clazz && getBrowserVersion().hasFeature(EVENT_ONCLOSE_DOCUMENT_CREATE_NOT_SUPPORTED)) {
            clazz = null;
        }
    }
    if (clazz == null && ("Events".equals(eventType) || "HashChangeEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_HASHCHANGEEVENT) || "BeforeUnloadEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_BEFOREUNLOADEVENT) || "MouseWheelEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_MOUSEWHEELEVENT) || "PointerEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_POINTEREVENT) || "PopStateEvent".equals(eventType) || "ProgressEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_PROGRESSEVENT) || "FocusEvent".equals(eventType) || "WheelEvent".equals(eventType) && getBrowserVersion().hasFeature(EVENT_TYPE_WHEELEVENT))) {
        clazz = SUPPORTED_VENDOR_EVENT_TYPE_MAP.get(eventType);
        if (PopStateEvent.class == clazz && getBrowserVersion().hasFeature(EVENT_ONPOPSTATE_DOCUMENT_CREATE_NOT_SUPPORTED)) {
            clazz = null;
        }
    }
    if (clazz == null) {
        Context.throwAsScriptRuntimeEx(new DOMException(DOMException.NOT_SUPPORTED_ERR, "Event Type is not supported: " + eventType));
        // to stop eclipse warning
        return null;
    }
    try {
        final Event event = clazz.newInstance();
        event.setParentScope(getWindow());
        event.setPrototype(getPrototype(clazz));
        event.eventCreated();
        return event;
    } catch (final InstantiationException | IllegalAccessException e) {
        throw Context.reportRuntimeError("Failed to instantiate event: class ='" + clazz.getName() + "' for event type of '" + eventType + "': " + e.getMessage());
    }
}
Also used : PopStateEvent(com.gargoylesoftware.htmlunit.javascript.host.event.PopStateEvent) CloseEvent(com.gargoylesoftware.htmlunit.javascript.host.event.CloseEvent) DOMException(org.w3c.dom.DOMException) CustomEvent(com.gargoylesoftware.htmlunit.javascript.host.event.CustomEvent) MouseEvent(com.gargoylesoftware.htmlunit.javascript.host.event.MouseEvent) PopStateEvent(com.gargoylesoftware.htmlunit.javascript.host.event.PopStateEvent) SVGZoomEvent(com.gargoylesoftware.htmlunit.javascript.host.event.SVGZoomEvent) ProgressEvent(com.gargoylesoftware.htmlunit.javascript.host.event.ProgressEvent) FocusEvent(com.gargoylesoftware.htmlunit.javascript.host.event.FocusEvent) CompositionEvent(com.gargoylesoftware.htmlunit.javascript.host.event.CompositionEvent) WheelEvent(com.gargoylesoftware.htmlunit.javascript.host.event.WheelEvent) KeyboardEvent(com.gargoylesoftware.htmlunit.javascript.host.event.KeyboardEvent) PointerEvent(com.gargoylesoftware.htmlunit.javascript.host.event.PointerEvent) HtmlAttributeChangeEvent(com.gargoylesoftware.htmlunit.html.HtmlAttributeChangeEvent) TextEvent(com.gargoylesoftware.htmlunit.javascript.host.event.TextEvent) CloseEvent(com.gargoylesoftware.htmlunit.javascript.host.event.CloseEvent) MouseWheelEvent(com.gargoylesoftware.htmlunit.javascript.host.event.MouseWheelEvent) HashChangeEvent(com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent) MutationEvent(com.gargoylesoftware.htmlunit.javascript.host.event.MutationEvent) UIEvent(com.gargoylesoftware.htmlunit.javascript.host.event.UIEvent) Event(com.gargoylesoftware.htmlunit.javascript.host.event.Event) DragEvent(com.gargoylesoftware.htmlunit.javascript.host.event.DragEvent) BeforeUnloadEvent(com.gargoylesoftware.htmlunit.javascript.host.event.BeforeUnloadEvent) MessageEvent(com.gargoylesoftware.htmlunit.javascript.host.event.MessageEvent) JsxFunction(com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction)

Example 2 with HashChangeEvent

use of com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent in project htmlunit by HtmlUnit.

the class Location method setHash.

/**
 * Sets the hash portion of the location URL (the portion following the '#').
 *
 * @param oldURL the old URL
 * @param hash the new hash portion of the location URL
 */
public void setHash(final String oldURL, String hash) {
    // we must not hit the server just to change the hash!
    if (hash != null && !hash.isEmpty() && hash.charAt(0) == '#') {
        hash = hash.substring(1);
    }
    final boolean hasChanged = hash != null && !hash.equals(hash_);
    hash_ = hash;
    if (hasChanged) {
        final Window w = getWindow();
        final Event event;
        if (getBrowserVersion().hasFeature(EVENT_TYPE_HASHCHANGEEVENT)) {
            event = new HashChangeEvent(w, Event.TYPE_HASH_CHANGE, oldURL, getHref());
        } else {
            event = new Event(w, Event.TYPE_HASH_CHANGE);
            event.initEvent(Event.TYPE_HASH_CHANGE, false, false);
        }
        w.executeEventLocally(event);
    }
}
Also used : WebWindow(com.gargoylesoftware.htmlunit.WebWindow) HashChangeEvent(com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent) Event(com.gargoylesoftware.htmlunit.javascript.host.event.Event) HashChangeEvent(com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent)

Aggregations

Event (com.gargoylesoftware.htmlunit.javascript.host.event.Event)2 HashChangeEvent (com.gargoylesoftware.htmlunit.javascript.host.event.HashChangeEvent)2 WebWindow (com.gargoylesoftware.htmlunit.WebWindow)1 HtmlAttributeChangeEvent (com.gargoylesoftware.htmlunit.html.HtmlAttributeChangeEvent)1 JsxFunction (com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction)1 BeforeUnloadEvent (com.gargoylesoftware.htmlunit.javascript.host.event.BeforeUnloadEvent)1 CloseEvent (com.gargoylesoftware.htmlunit.javascript.host.event.CloseEvent)1 CompositionEvent (com.gargoylesoftware.htmlunit.javascript.host.event.CompositionEvent)1 CustomEvent (com.gargoylesoftware.htmlunit.javascript.host.event.CustomEvent)1 DragEvent (com.gargoylesoftware.htmlunit.javascript.host.event.DragEvent)1 FocusEvent (com.gargoylesoftware.htmlunit.javascript.host.event.FocusEvent)1 KeyboardEvent (com.gargoylesoftware.htmlunit.javascript.host.event.KeyboardEvent)1 MessageEvent (com.gargoylesoftware.htmlunit.javascript.host.event.MessageEvent)1 MouseEvent (com.gargoylesoftware.htmlunit.javascript.host.event.MouseEvent)1 MouseWheelEvent (com.gargoylesoftware.htmlunit.javascript.host.event.MouseWheelEvent)1 MutationEvent (com.gargoylesoftware.htmlunit.javascript.host.event.MutationEvent)1 PointerEvent (com.gargoylesoftware.htmlunit.javascript.host.event.PointerEvent)1 PopStateEvent (com.gargoylesoftware.htmlunit.javascript.host.event.PopStateEvent)1 ProgressEvent (com.gargoylesoftware.htmlunit.javascript.host.event.ProgressEvent)1 SVGZoomEvent (com.gargoylesoftware.htmlunit.javascript.host.event.SVGZoomEvent)1