View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit.javascript.host.svg;
16  
17  import static org.htmlunit.javascript.configuration.SupportedBrowser.CHROME;
18  import static org.htmlunit.javascript.configuration.SupportedBrowser.EDGE;
19  import static org.htmlunit.javascript.configuration.SupportedBrowser.FF;
20  import static org.htmlunit.javascript.configuration.SupportedBrowser.FF_ESR;
21  
22  import org.htmlunit.corejs.javascript.Function;
23  import org.htmlunit.javascript.JavaScriptEngine;
24  import org.htmlunit.javascript.configuration.JsxClass;
25  import org.htmlunit.javascript.configuration.JsxConstructor;
26  import org.htmlunit.javascript.configuration.JsxGetter;
27  import org.htmlunit.javascript.configuration.JsxSetter;
28  import org.htmlunit.javascript.host.Element;
29  import org.htmlunit.javascript.host.css.CSSStyleDeclaration;
30  import org.htmlunit.javascript.host.event.Event;
31  import org.htmlunit.javascript.host.event.MouseEvent;
32  import org.htmlunit.svg.SvgElement;
33  
34  /**
35   * A JavaScript object for {@code SVGElement}.
36   *
37   * @author Ahmed Ashour
38   * @author Ronald Brill
39   */
40  @JsxClass(domClass = SvgElement.class)
41  public class SVGElement extends Element {
42  
43      /**
44       * Creates an instance.
45       */
46      @Override
47      @JsxConstructor
48      public void jsConstructor() {
49          throw JavaScriptEngine.typeErrorIllegalConstructor();
50      }
51  
52      /**
53       * Returns the bounding box, in current user space, of the geometry of all contained graphics elements.
54       * @return the bounding box
55       */
56      protected SVGRect getBBox() {
57          final SVGRect rect = new SVGRect();
58          rect.setParentScope(getParentScope());
59          rect.setPrototype(getPrototype(rect.getClass()));
60          return rect;
61      }
62  
63      /**
64       * {@inheritDoc}
65       */
66      @Override
67      @JsxGetter
68      public CSSStyleDeclaration getStyle() {
69          return super.getStyle();
70      }
71  
72      /**
73       * {@inheritDoc}
74       */
75      @Override
76      @JsxSetter
77      public void setStyle(final String style) {
78          super.setStyle(style);
79      }
80  
81      /**
82       * Returns the {@code onfocus} event handler.
83       * @return the {@code onfocus} event handler
84       */
85      @JsxGetter
86      public Function getOnfocus() {
87          return getEventHandler(Event.TYPE_FOCUS);
88      }
89  
90      /**
91       * Sets the {@code onfocus} event handler.
92       * @param focus the {@code onfocus} event handler
93       */
94      @JsxSetter
95      public void setOnfocus(final Object focus) {
96          setEventHandler(Event.TYPE_FOCUS, focus);
97      }
98  
99      /**
100      * Returns the {@code ondragend} event handler.
101      * @return the {@code ondragend} event handler
102      */
103     @JsxGetter
104     public Function getOndragend() {
105         return getEventHandler(Event.TYPE_DRAGEND);
106     }
107 
108     /**
109      * Sets the {@code ondragend} event handler.
110      * @param dragend the {@code ondragend} event handler
111      */
112     @JsxSetter
113     public void setOndragend(final Object dragend) {
114         setEventHandler(Event.TYPE_DRAGEND, dragend);
115     }
116 
117     /**
118      * Returns the {@code oninvalid} event handler.
119      * @return the {@code oninvalid} event handler
120      */
121     @JsxGetter
122     public Function getOninvalid() {
123         return getEventHandler(Event.TYPE_INVALID);
124     }
125 
126     /**
127      * Sets the {@code oninvalid} event handler.
128      * @param invalid the {@code oninvalid} event handler
129      */
130     @JsxSetter
131     public void setOninvalid(final Object invalid) {
132         setEventHandler(Event.TYPE_INVALID, invalid);
133     }
134 
135     /**
136      * Returns the {@code pointercancel} event handler for this element.
137      * @return the {@code pointercancel} event handler for this element
138      */
139     @JsxGetter({CHROME, EDGE})
140     public Function getOnpointercancel() {
141         return getEventHandler(Event.TYPE_POINTERCANCEL);
142     }
143 
144     /**
145      * Sets the {@code pointercancel} event handler.
146      * @param pointercancel the {@code pointercancel} event handler
147      */
148     @JsxSetter({CHROME, EDGE})
149     public void setOnpointercancel(final Object pointercancel) {
150         setEventHandler(Event.TYPE_POINTERCANCEL, pointercancel);
151     }
152 
153     /**
154      * Returns the {@code pointerout} event handler for this element.
155      * @return the {@code pointerout} event handler for this element
156      */
157     @JsxGetter({CHROME, EDGE})
158     public Function getOnpointerout() {
159         return getEventHandler(Event.TYPE_POINTEROUT);
160     }
161 
162     /**
163      * Sets the {@code pointerout} event handler.
164      * @param pointerout the {@code pointerout} event handler
165      */
166     @JsxSetter({CHROME, EDGE})
167     public void setOnpointerout(final Object pointerout) {
168         setEventHandler(Event.TYPE_POINTEROUT, pointerout);
169     }
170 
171     /**
172      * Returns the {@code onratechange} event handler.
173      * @return the {@code onratechange} event handler
174      */
175     @JsxGetter
176     public Function getOnratechange() {
177         return getEventHandler(Event.TYPE_RATECHANGE);
178     }
179 
180     /**
181      * Sets the {@code onratechange} event handler.
182      * @param ratechange the {@code onratechange} event handler
183      */
184     @JsxSetter
185     public void setOnratechange(final Object ratechange) {
186         setEventHandler(Event.TYPE_RATECHANGE, ratechange);
187     }
188 
189     /**
190      * Returns the {@code onresize} event handler.
191      * @return the {@code onresize} event handler
192      */
193     @JsxGetter
194     public Function getOnresize() {
195         return getEventHandler(Event.TYPE_RESIZE);
196     }
197 
198     /**
199      * Sets the {@code onresize} event handler.
200      * @param resize the {@code onresize} event handler
201      */
202     @JsxSetter
203     public void setOnresize(final Object resize) {
204         setEventHandler(Event.TYPE_RESIZE, resize);
205     }
206 
207     /**
208      * Returns the {@code oncanplaythrough} event handler.
209      * @return the {@code oncanplaythrough} event handler
210      */
211     @JsxGetter
212     public Function getOncanplaythrough() {
213         return getEventHandler(Event.TYPE_CANPLAYTHROUGH);
214     }
215 
216     /**
217      * Sets the {@code oncanplaythrough} event handler.
218      * @param canplaythrough the {@code oncanplaythrough} event handler
219      */
220     @JsxSetter
221     public void setOncanplaythrough(final Object canplaythrough) {
222         setEventHandler(Event.TYPE_CANPLAYTHROUGH, canplaythrough);
223     }
224 
225     /**
226      * Returns the {@code oncancel} event handler.
227      * @return the {@code oncancel} event handler
228      */
229     @JsxGetter({CHROME, EDGE})
230     public Function getOncancel() {
231         return getEventHandler(Event.TYPE_CANCEL);
232     }
233 
234     /**
235      * Sets the {@code oncancel} event handler.
236      * @param cancel the {@code oncancel} event handler
237      */
238     @JsxSetter({CHROME, EDGE})
239     public void setOncancel(final Object cancel) {
240         setEventHandler(Event.TYPE_CANCEL, cancel);
241     }
242 
243     /**
244      * Returns the {@code pointerenter} event handler.
245      * @return the {@code pointerenter} event handler
246      */
247     @JsxGetter({CHROME, EDGE})
248     public Function getOnpointerenter() {
249         return getEventHandler(Event.TYPE_POINTERENTER);
250     }
251 
252     /**
253      * Sets the {@code pointerenter} event handler.
254      * @param pointerenter the {@code pointerenter} event handler
255      */
256     @JsxSetter({CHROME, EDGE})
257     public void setOnpointerenter(final Object pointerenter) {
258         setEventHandler(Event.TYPE_POINTERENTER, pointerenter);
259     }
260 
261     /**
262      * Returns the {@code onselect} event handler.
263      * @return the {@code onselect} event handler
264      */
265     @JsxGetter
266     public Function getOnselect() {
267         return getEventHandler(Event.TYPE_SELECT);
268     }
269 
270     /**
271      * Sets the {@code onselect} event handler.
272      * @param select the {@code onselect} event handler
273      */
274     @JsxSetter
275     public void setOnselect(final Object select) {
276         setEventHandler(Event.TYPE_SELECT, select);
277     }
278 
279     /**
280      * Returns the {@code onselectstart} event handler for this element.
281      * @return the {@code onselectstart} event handler for this element
282      */
283     @JsxGetter
284     public Function getOnselectstart() {
285         return getEventHandler(Event.TYPE_SELECTSTART);
286     }
287 
288     /**
289      * Sets the {@code onselectstart} event handler for this element.
290      * @param onselectstart the {@code onselectstart} event handler for this element
291      */
292     @JsxSetter
293     public void setOnselectstart(final Object onselectstart) {
294         setEventHandler(Event.TYPE_SELECTSTART, onselectstart);
295     }
296 
297     /**
298      * Returns the {@code onselectionchange} event handler for this element.
299      * @return the {@code onselectionchange} event handler for this element
300      */
301     @JsxGetter
302     public Function getOnselectionchange() {
303         return getEventHandler(Event.TYPE_SELECTIONCHANGE);
304     }
305 
306     /**
307      * Sets the {@code onselectionchange} event handler for this element.
308      * @param onselectionchange the {@code onselectionchange} event handler for this element
309      */
310     @JsxSetter
311     public void setOnselectionchange(final Object onselectionchange) {
312         setEventHandler(Event.TYPE_SELECTIONCHANGE, onselectionchange);
313     }
314 
315     /**
316      * Returns the {@code onauxclick} event handler.
317      * @return the {@code onauxclick} event handler
318      */
319     @JsxGetter({CHROME, EDGE})
320     public Function getOnauxclick() {
321         return getEventHandler(Event.TYPE_AUXCLICK);
322     }
323 
324     /**
325      * Sets the {@code onauxclick} event handler.
326      * @param auxclick the {@code onauxclick} event handler
327      */
328     @JsxSetter({CHROME, EDGE})
329     public void setOnauxclick(final Object auxclick) {
330         setEventHandler(Event.TYPE_AUXCLICK, auxclick);
331     }
332 
333     /**
334      * Returns the {@code onpause} event handler.
335      * @return the {@code onpause} event handler
336      */
337     @JsxGetter
338     public Function getOnpause() {
339         return getEventHandler(Event.TYPE_PAUSE);
340     }
341 
342     /**
343      * Sets the {@code onpause} event handler.
344      * @param pause the {@code onpause} event handler
345      */
346     @JsxSetter
347     public void setOnpause(final Object pause) {
348         setEventHandler(Event.TYPE_PAUSE, pause);
349     }
350 
351     /**
352      * Returns the {@code onloadstart} event handler.
353      * @return the {@code onloadstart} event handler
354      */
355     @JsxGetter
356     public Function getOnloadstart() {
357         return getEventHandler(Event.TYPE_LOAD_START);
358     }
359 
360     /**
361      * Sets the {@code onloadstart} event handler.
362      * @param loadstart the {@code onloadstart} event handler
363      */
364     @JsxSetter
365     public void setOnloadstart(final Object loadstart) {
366         setEventHandler(Event.TYPE_LOAD_START, loadstart);
367     }
368 
369     /**
370      * Returns the {@code onprogress} event handler.
371      * @return the {@code onprogress} event handler
372      */
373     @JsxGetter
374     public Function getOnprogress() {
375         return getEventHandler(Event.TYPE_PROGRESS);
376     }
377 
378     /**
379      * Sets the {@code onprogress} event handler.
380      * @param progress the {@code onprogress} event handler
381      */
382     @JsxSetter
383     public void setOnprogress(final Object progress) {
384         setEventHandler(Event.TYPE_PROGRESS, progress);
385     }
386 
387     /**
388      * Returns the {@code pointerup} event handler for this element.
389      * @return the {@code pointerup} event handler for this element
390      */
391     @JsxGetter({CHROME, EDGE})
392     public Function getOnpointerup() {
393         return getEventHandler(Event.TYPE_POINTERUP);
394     }
395 
396     /**
397      * Sets the {@code pointerup} event handler.
398      * @param pointerup the {@code pointerup} event handler
399      */
400     @JsxSetter({CHROME, EDGE})
401     public void setOnpointerup(final Object pointerup) {
402         setEventHandler(Event.TYPE_POINTERUP, pointerup);
403     }
404 
405     /**
406      * Returns the {@code onscroll} event handler.
407      * @return the {@code onscroll} event handler
408      */
409     @JsxGetter
410     public Function getOnscroll() {
411         return getEventHandler(Event.TYPE_SCROLL);
412     }
413 
414     /**
415      * Sets the {@code onscroll} event handler.
416      * @param scroll the {@code onscroll} event handler
417      */
418     @JsxSetter
419     public void setOnscroll(final Object scroll) {
420         setEventHandler(Event.TYPE_SCROLL, scroll);
421     }
422 
423     /**
424      * Returns the {@code onscrollend} event handler.
425      * @return the {@code onscrollend} event handler
426      */
427     @JsxGetter({CHROME, EDGE, FF})
428     public Function getOnscrollend() {
429         return getEventHandler(Event.TYPE_SCROLLEND);
430     }
431 
432     /**
433      * Sets the {@code onscrollend} event handler.
434      * @param scrollend the {@code onscrollend} event handler
435      */
436     @JsxSetter({CHROME, EDGE, FF})
437     public void setOnscrollend(final Object scrollend) {
438         setEventHandler(Event.TYPE_SCROLLEND, scrollend);
439     }
440 
441     /**
442      * Returns the {@code onkeydown} event handler.
443      * @return the {@code onkeydown} event handler
444      */
445     @JsxGetter
446     public Function getOnkeydown() {
447         return getEventHandler(Event.TYPE_KEY_DOWN);
448     }
449 
450     /**
451      * Sets the {@code onkeydown} event handler.
452      * @param keydown the {@code onkeydown} event handler
453      */
454     @JsxSetter
455     public void setOnkeydown(final Object keydown) {
456         setEventHandler(Event.TYPE_KEY_DOWN, keydown);
457     }
458 
459     /**
460      * Returns the {@code pointerleave} event handler.
461      * @return the {@code pointerleave} event handler
462      */
463     @JsxGetter({CHROME, EDGE})
464     public Function getOnpointerleave() {
465         return getEventHandler(Event.TYPE_POINTERLEAVE);
466     }
467 
468     /**
469      * Sets the {@code pointerleave} event handler.
470      * @param pointerleave the {@code pointerleave} event handler
471      */
472     @JsxSetter({CHROME, EDGE})
473     public void setOnpointerleave(final Object pointerleave) {
474         setEventHandler(Event.TYPE_POINTERLEAVE, pointerleave);
475     }
476 
477     /**
478      * Returns the {@code onclick} event handler.
479      * @return the {@code onclick} event handler
480      */
481     @JsxGetter
482     public Function getOnclick() {
483         return getEventHandler(MouseEvent.TYPE_CLICK);
484     }
485 
486     /**
487      * Sets the {@code onclick} event handler.
488      * @param click the {@code onclick} event handler
489      */
490     @JsxSetter
491     public void setOnclick(final Object click) {
492         setEventHandler(MouseEvent.TYPE_CLICK, click);
493     }
494 
495     /**
496      * Returns the {@code onkeyup} event handler.
497      * @return the {@code onkeyup} event handler
498      */
499     @JsxGetter
500     public Function getOnkeyup() {
501         return getEventHandler(Event.TYPE_KEY_UP);
502     }
503 
504     /**
505      * Sets the {@code onkeyup} event handler.
506      * @param keyup the {@code onkeyup} event handler
507      */
508     @JsxSetter
509     public void setOnkeyup(final Object keyup) {
510         setEventHandler(Event.TYPE_KEY_UP, keyup);
511     }
512 
513     /**
514      * Returns the {@code onchange} event handler.
515      * @return the {@code onchange} event handler
516      */
517     @JsxGetter
518     public Function getOnchange() {
519         return getEventHandler(Event.TYPE_CHANGE);
520     }
521 
522     /**
523      * Sets the {@code onchange} event handler.
524      * @param change the {@code onchange} event handler
525      */
526     @JsxSetter
527     public void setOnchange(final Object change) {
528         setEventHandler(Event.TYPE_CHANGE, change);
529     }
530 
531     /**
532      * Returns the {@code onreset} event handler.
533      * @return the {@code onreset} event handler
534      */
535     @JsxGetter
536     public Function getOnreset() {
537         return getEventHandler(Event.TYPE_RESET);
538     }
539 
540     /**
541      * Sets the {@code onreset} event handler.
542      * @param reset the {@code onreset} event handler
543      */
544     @JsxSetter
545     public void setOnreset(final Object reset) {
546         setEventHandler(Event.TYPE_RESET, reset);
547     }
548 
549     /**
550      * Returns the {@code onkeypress} event handler.
551      * @return the {@code onkeypress} event handler
552      */
553     @JsxGetter
554     public Function getOnkeypress() {
555         return getEventHandler(Event.TYPE_KEY_PRESS);
556     }
557 
558     /**
559      * Sets the {@code onkeypress} event handler.
560      * @param keypress the {@code onkeypress} event handler
561      */
562     @JsxSetter
563     public void setOnkeypress(final Object keypress) {
564         setEventHandler(Event.TYPE_KEY_PRESS, keypress);
565     }
566 
567     /**
568      * Returns the {@code ontimeupdate} event handler.
569      * @return the {@code ontimeupdate} event handler
570      */
571     @JsxGetter
572     public Function getOntimeupdate() {
573         return getEventHandler(Event.TYPE_TIMEUPDATE);
574     }
575 
576     /**
577      * Sets the {@code ontimeupdate} event handler.
578      * @param timeupdate the {@code ontimeupdate} event handler
579      */
580     @JsxSetter
581     public void setOntimeupdate(final Object timeupdate) {
582         setEventHandler(Event.TYPE_TIMEUPDATE, timeupdate);
583     }
584 
585     /**
586      * Returns the {@code ondblclick} event handler.
587      * @return the {@code ondblclick} event handler
588      */
589     @JsxGetter
590     public Function getOndblclick() {
591         return getEventHandler(MouseEvent.TYPE_DBL_CLICK);
592     }
593 
594     /**
595      * Sets the {@code ondblclick} event handler.
596      * @param dblclick the {@code ondblclick} event handler
597      */
598     @JsxSetter
599     public void setOndblclick(final Object dblclick) {
600         setEventHandler(MouseEvent.TYPE_DBL_CLICK, dblclick);
601     }
602 
603     /**
604      * Returns the {@code ondrag} event handler.
605      * @return the {@code ondrag} event handler
606      */
607     @JsxGetter
608     public Function getOndrag() {
609         return getEventHandler(Event.TYPE_DRAG);
610     }
611 
612     /**
613      * Sets the {@code ondrag} event handler.
614      * @param drag the {@code ondrag} event handler
615      */
616     @JsxSetter
617     public void setOndrag(final Object drag) {
618         setEventHandler(Event.TYPE_DRAG, drag);
619     }
620 
621     /**
622      * Returns the {@code onseeked} event handler.
623      * @return the {@code onseeked} event handler
624      */
625     @JsxGetter
626     public Function getOnseeked() {
627         return getEventHandler(Event.TYPE_SEEKED);
628     }
629 
630     /**
631      * Sets the {@code onseeked} event handler.
632      * @param seeked the {@code onseeked} event handler
633      */
634     @JsxSetter
635     public void setOnseeked(final Object seeked) {
636         setEventHandler(Event.TYPE_SEEKED, seeked);
637     }
638 
639     /**
640      * Returns the {@code onabort} event handler.
641      * @return the {@code onabort} event handler
642      */
643     @JsxGetter
644     public Function getOnabort() {
645         return getEventHandler(Event.TYPE_ABORT);
646     }
647 
648     /**
649      * Sets the {@code onabort} event handler.
650      * @param abort the {@code onabort} event handler
651      */
652     @JsxSetter
653     public void setOnabort(final Object abort) {
654         setEventHandler(Event.TYPE_ABORT, abort);
655     }
656 
657     /**
658      * Returns the {@code onloadedmetadata} event handler.
659      * @return the {@code onloadedmetadata} event handler
660      */
661     @JsxGetter
662     public Function getOnloadedmetadata() {
663         return getEventHandler(Event.TYPE_LOADEDMETADATA);
664     }
665 
666     /**
667      * Sets the {@code onloadedmetadata} event handler.
668      * @param loadedmetadata the {@code onloadedmetadata} event handler
669      */
670     @JsxSetter
671     public void setOnloadedmetadata(final Object loadedmetadata) {
672         setEventHandler(Event.TYPE_LOADEDMETADATA, loadedmetadata);
673     }
674 
675     /**
676      * Returns the {@code ontoggle} event handler.
677      * @return the {@code ontoggle} event handler
678      */
679     @JsxGetter({CHROME, EDGE})
680     public Function getOntoggle() {
681         return getEventHandler(Event.TYPE_TOGGLE);
682     }
683 
684     /**
685      * Sets the {@code ontoggle} event handler.
686      * @param toggle the {@code ontoggle} event handler
687      */
688     @JsxSetter({CHROME, EDGE})
689     public void setOntoggle(final Object toggle) {
690         setEventHandler(Event.TYPE_TOGGLE, toggle);
691     }
692 
693     /**
694      * Returns the {@code onplay} event handler.
695      * @return the {@code onplay} event handler
696      */
697     @JsxGetter
698     public Function getOnplay() {
699         return getEventHandler(Event.TYPE_PLAY);
700     }
701 
702     /**
703      * Sets the {@code onplay} event handler.
704      * @param play the {@code onplay} event handler
705      */
706     @JsxSetter
707     public void setOnplay(final Object play) {
708         setEventHandler(Event.TYPE_PLAY, play);
709     }
710 
711     /**
712      * Returns the {@code oncontextmenu} event handler.
713      * @return the {@code oncontextmenu} event handler
714      */
715     @JsxGetter
716     public Function getOncontextmenu() {
717         return getEventHandler(MouseEvent.TYPE_CONTEXT_MENU);
718     }
719 
720     /**
721      * Sets the {@code oncontextmenu} event handler.
722      * @param contextmenu the {@code oncontextmenu} event handler
723      */
724     @JsxSetter
725     public void setOncontextmenu(final Object contextmenu) {
726         setEventHandler(MouseEvent.TYPE_CONTEXT_MENU, contextmenu);
727     }
728 
729     /**
730      * Returns the {@code onmousemove} event handler.
731      * @return the {@code onmousemove} event handler
732      */
733     @JsxGetter
734     public Function getOnmousemove() {
735         return getEventHandler(MouseEvent.TYPE_MOUSE_MOVE);
736     }
737 
738     /**
739      * Sets the {@code onmousemove} event handler.
740      * @param mousemove the {@code onmousemove} event handler
741      */
742     @JsxSetter
743     public void setOnmousemove(final Object mousemove) {
744         setEventHandler(MouseEvent.TYPE_MOUSE_MOVE, mousemove);
745     }
746 
747     /**
748      * Returns the {@code onerror} event handler.
749      * @return the {@code onerror} event handler
750      */
751     @JsxGetter
752     public Function getOnerror() {
753         return getEventHandler(Event.TYPE_ERROR);
754     }
755 
756     /**
757      * Sets the {@code onerror} event handler.
758      * @param error the {@code onerror} event handler
759      */
760     @JsxSetter
761     public void setOnerror(final Object error) {
762         setEventHandler(Event.TYPE_ERROR, error);
763     }
764 
765     /**
766      * Returns the {@code onmouseup} event handler.
767      * @return the {@code onmouseup} event handler
768      */
769     @JsxGetter
770     public Function getOnmouseup() {
771         return getEventHandler(MouseEvent.TYPE_MOUSE_UP);
772     }
773 
774     /**
775      * Sets the {@code onmouseup} event handler.
776      * @param mouseup the {@code onmouseup} event handler
777      */
778     @JsxSetter
779     public void setOnmouseup(final Object mouseup) {
780         setEventHandler(MouseEvent.TYPE_MOUSE_UP, mouseup);
781     }
782 
783     /**
784      * Returns the {@code ondragover} event handler.
785      * @return the {@code ondragover} event handler
786      */
787     @JsxGetter
788     public Function getOndragover() {
789         return getEventHandler(Event.TYPE_DRAGOVER);
790     }
791 
792     /**
793      * Sets the {@code ondragover} event handler.
794      * @param dragover the {@code ondragover} event handler
795      */
796     @JsxSetter
797     public void setOndragover(final Object dragover) {
798         setEventHandler(Event.TYPE_DRAGOVER, dragover);
799     }
800 
801     /**
802      * Returns the {@code pointermove} event handler for this element.
803      * @return the {@code pointermove} event handler for this element
804      */
805     @JsxGetter({CHROME, EDGE})
806     public Function getOnpointermove() {
807         return getEventHandler(Event.TYPE_POINTERMOVE);
808     }
809 
810     /**
811      * Sets the {@code pointermove} event handler.
812      * @param pointermove the {@code pointermove} event handler
813      */
814     @JsxSetter({CHROME, EDGE})
815     public void setOnpointermove(final Object pointermove) {
816         setEventHandler(Event.TYPE_POINTERMOVE, pointermove);
817     }
818 
819     /**
820      * Returns the {@code oncut} event handler.
821      * @return the {@code oncut} event handler
822      */
823     @JsxGetter
824     public Function getOncut() {
825         return getEventHandler(Event.TYPE_CUT);
826     }
827 
828     /**
829      * Sets the {@code oncut} event handler.
830      * @param cut the {@code oncut} event handler
831      */
832     @JsxSetter
833     public void setOncut(final Object cut) {
834         setEventHandler(Event.TYPE_CUT, cut);
835     }
836 
837     /**
838      * Returns the {@code onmouseover} event handler.
839      * @return the {@code onmouseover} event handler
840      */
841     @JsxGetter
842     public Function getOnmouseover() {
843         return getEventHandler(MouseEvent.TYPE_MOUSE_OVER);
844     }
845 
846     /**
847      * Sets the {@code onmouseover} event handler.
848      * @param mouseover the {@code onmouseover} event handler
849      */
850     @JsxSetter
851     public void setOnmouseover(final Object mouseover) {
852         setEventHandler(MouseEvent.TYPE_MOUSE_OVER, mouseover);
853     }
854 
855     /**
856      * Returns the {@code oninput} event handler.
857      * @return the {@code oninput} event handler
858      */
859     @JsxGetter
860     public Function getOninput() {
861         return getEventHandler(Event.TYPE_INPUT);
862     }
863 
864     /**
865      * Sets the {@code oninput} event handler.
866      * @param input the {@code oninput} event handler
867      */
868     @JsxSetter
869     public void setOninput(final Object input) {
870         setEventHandler(Event.TYPE_INPUT, input);
871     }
872 
873     /**
874      * Returns the {@code lostpointercapture} event handler for this element.
875      * @return the {@code lostpointercapture} event handler for this element
876      */
877     @JsxGetter({CHROME, EDGE})
878     public Function getOnlostpointercapture() {
879         return getEventHandler(Event.TYPE_LOSTPOINTERCAPTURE);
880     }
881 
882     /**
883      * Sets the {@code lostpointercapture} event handler.
884      * @param lostpointercapture the {@code lostpointercapture} event handler
885      */
886     @JsxSetter({CHROME, EDGE})
887     public void setOnlostpointercapture(final Object lostpointercapture) {
888         setEventHandler(Event.TYPE_LOSTPOINTERCAPTURE, lostpointercapture);
889     }
890 
891     /**
892      * Returns the {@code onstalled} event handler.
893      * @return the {@code onstalled} event handler
894      */
895     @JsxGetter
896     public Function getOnstalled() {
897         return getEventHandler(Event.TYPE_STALLED);
898     }
899 
900     /**
901      * Sets the {@code onstalled} event handler.
902      * @param stalled the {@code onstalled} event handler
903      */
904     @JsxSetter
905     public void setOnstalled(final Object stalled) {
906         setEventHandler(Event.TYPE_STALLED, stalled);
907     }
908 
909     /**
910      * Returns the {@code pointerover} event handler for this element.
911      * @return the {@code pointerover} event handler for this element
912      */
913     @JsxGetter({CHROME, EDGE})
914     public Function getOnpointerover() {
915         return getEventHandler(Event.TYPE_POINTEROVER);
916     }
917 
918     /**
919      * Sets the {@code pointerover} event handler.
920      * @param pointerover the {@code pointerover} event handler
921      */
922     @JsxSetter({CHROME, EDGE})
923     public void setOnpointerover(final Object pointerover) {
924         setEventHandler(Event.TYPE_POINTEROVER, pointerover);
925     }
926 
927     /**
928      * Returns the {@code onclose} event handler.
929      * @return the {@code onclose} event handler
930      */
931     @JsxGetter
932     public Function getOnclose() {
933         return getEventHandler(Event.TYPE_CLOSE);
934     }
935 
936     /**
937      * Sets the {@code onclose} event handler.
938      * @param close the {@code onclose} event handler
939      */
940     @JsxSetter
941     public void setOnclose(final Object close) {
942         setEventHandler(Event.TYPE_CLOSE, close);
943     }
944 
945     /**
946      * Returns the {@code ondragenter} event handler.
947      * @return the {@code ondragenter} event handler
948      */
949     @JsxGetter
950     public Function getOndragenter() {
951         return getEventHandler(Event.TYPE_DRAGENTER);
952     }
953 
954     /**
955      * Sets the {@code ondragenter} event handler.
956      * @param dragenter the {@code ondragenter} event handler
957      */
958     @JsxSetter
959     public void setOndragenter(final Object dragenter) {
960         setEventHandler(Event.TYPE_DRAGENTER, dragenter);
961     }
962 
963     /**
964      * Returns the {@code onmozfullscreenerror} event handler.
965      * @return the {@code onmozfullscreenerror} event handler
966      */
967     @JsxGetter({FF, FF_ESR})
968     public Function getOnmozfullscreenerror() {
969         return getEventHandler(Event.TYPE_MOZFULLSCREENERROR);
970     }
971 
972     /**
973      * Sets the {@code onmozfullscreenerror} event handler.
974      * @param mozfullscreenerror the {@code onmozfullscreenerror} event handler
975      */
976     @JsxSetter({FF, FF_ESR})
977     public void setOnmozfullscreenerror(final Object mozfullscreenerror) {
978         setEventHandler(Event.TYPE_MOZFULLSCREENERROR, mozfullscreenerror);
979     }
980 
981     /**
982      * Returns the {@code onsubmit} event handler.
983      * @return the {@code onsubmit} event handler
984      */
985     @JsxGetter
986     public Function getOnsubmit() {
987         return getEventHandler(Event.TYPE_SUBMIT);
988     }
989 
990     /**
991      * Sets the {@code onsubmit} event handler.
992      * @param submit the {@code onsubmit} event handler
993      */
994     @JsxSetter
995     public void setOnsubmit(final Object submit) {
996         setEventHandler(Event.TYPE_SUBMIT, submit);
997     }
998 
999     /**
1000      * Returns the {@code onmouseleave} event handler.
1001      * @return the {@code onmouseleave} event handler
1002      */
1003     @JsxGetter
1004     public Function getOnmouseleave() {
1005         return getEventHandler(Event.TYPE_MOUSELEAVE);
1006     }
1007 
1008     /**
1009      * Sets the {@code onmouseleave} event handler.
1010      * @param mouseleave the {@code onmouseleave} event handler
1011      */
1012     @JsxSetter
1013     public void setOnmouseleave(final Object mouseleave) {
1014         setEventHandler(Event.TYPE_MOUSELEAVE, mouseleave);
1015     }
1016 
1017     /**
1018      * Returns the {@code onmouseenter} event handler.
1019      * @return the {@code onmouseenter} event handler
1020      */
1021     @JsxGetter
1022     public Function getOnmouseenter() {
1023         return getEventHandler(Event.TYPE_MOUDEENTER);
1024     }
1025 
1026     /**
1027      * Sets the {@code onmouseenter} event handler.
1028      * @param mouseenter the {@code onmouseenter} event handler
1029      */
1030     @JsxSetter
1031     public void setOnmouseenter(final Object mouseenter) {
1032         setEventHandler(Event.TYPE_MOUDEENTER, mouseenter);
1033     }
1034 
1035     /**
1036      * Returns the {@code ondragleave} event handler.
1037      * @return the {@code ondragleave} event handler
1038      */
1039     @JsxGetter
1040     public Function getOndragleave() {
1041         return getEventHandler(Event.TYPE_DRAGLEAVE);
1042     }
1043 
1044     /**
1045      * Sets the {@code ondragleave} event handler.
1046      * @param dragleave the {@code ondragleave} event handler
1047      */
1048     @JsxSetter
1049     public void setOndragleave(final Object dragleave) {
1050         setEventHandler(Event.TYPE_DRAGLEAVE, dragleave);
1051     }
1052 
1053     /**
1054      * Returns the {@code onmousewheel} event handler.
1055      * @return the {@code onmousewheel} event handler
1056      */
1057     @JsxGetter({CHROME, EDGE})
1058     public Function getOnmousewheel() {
1059         return getEventHandler(Event.TYPE_MOUSEWHEEL);
1060     }
1061 
1062     /**
1063      * Sets the {@code onmousewheel} event handler.
1064      * @param mousewheel the {@code onmousewheel} event handler
1065      */
1066     @JsxSetter({CHROME, EDGE})
1067     public void setOnmousewheel(final Object mousewheel) {
1068         setEventHandler(Event.TYPE_MOUSEWHEEL, mousewheel);
1069     }
1070 
1071     /**
1072      * Returns the {@code pointerdown} event handler for this element.
1073      * @return the {@code pointerdown} event handler for this element
1074      */
1075     @JsxGetter({CHROME, EDGE})
1076     public Function getOnpointerdown() {
1077         return getEventHandler(Event.TYPE_POINTERDOWN);
1078     }
1079 
1080     /**
1081      * Sets the {@code pointerdown} event handler.
1082      * @param pointerdown the {@code pointerdown} event handler
1083      */
1084     @JsxSetter({CHROME, EDGE})
1085     public void setOnpointerdown(final Object pointerdown) {
1086         setEventHandler(Event.TYPE_POINTERDOWN, pointerdown);
1087     }
1088 
1089     /**
1090      * Returns the {@code onseeking} event handler.
1091      * @return the {@code onseeking} event handler
1092      */
1093     @JsxGetter
1094     public Function getOnseeking() {
1095         return getEventHandler(Event.TYPE_SEEKING);
1096     }
1097 
1098     /**
1099      * Sets the {@code onseeking} event handler.
1100      * @param seeking the {@code onseeking} event handler
1101      */
1102     @JsxSetter
1103     public void setOnseeking(final Object seeking) {
1104         setEventHandler(Event.TYPE_SEEKING, seeking);
1105     }
1106 
1107     /**
1108      * Returns the {@code onblur} event handler.
1109      * @return the {@code onblur} event handler
1110      */
1111     @JsxGetter
1112     public Function getOnblur() {
1113         return getEventHandler(Event.TYPE_BLUR);
1114     }
1115 
1116     /**
1117      * Sets the {@code onblur} event handler.
1118      * @param blur the {@code onblur} event handler
1119      */
1120     @JsxSetter
1121     public void setOnblur(final Object blur) {
1122         setEventHandler(Event.TYPE_BLUR, blur);
1123     }
1124 
1125     /**
1126      * Returns the {@code oncuechange} event handler.
1127      * @return the {@code oncuechange} event handler
1128      */
1129     @JsxGetter({CHROME, EDGE})
1130     public Function getOncuechange() {
1131         return getEventHandler(Event.TYPE_CUECHANGE);
1132     }
1133 
1134     /**
1135      * Sets the {@code oncuechange} event handler.
1136      * @param cuechange the {@code oncuechange} event handler
1137      */
1138     @JsxSetter({CHROME, EDGE})
1139     public void setOncuechange(final Object cuechange) {
1140         setEventHandler(Event.TYPE_CUECHANGE, cuechange);
1141     }
1142 
1143     /**
1144      * Returns the {@code ondrop} event handler.
1145      * @return the {@code ondrop} event handler
1146      */
1147     @JsxGetter
1148     public Function getOndrop() {
1149         return getEventHandler(Event.TYPE_DROP);
1150     }
1151 
1152     /**
1153      * Sets the {@code ondrop} event handler.
1154      * @param drop the {@code ondrop} event handler
1155      */
1156     @JsxSetter
1157     public void setOndrop(final Object drop) {
1158         setEventHandler(Event.TYPE_DROP, drop);
1159     }
1160 
1161     /**
1162      * Returns the {@code ondragstart} event handler.
1163      * @return the {@code ondragstart} event handler
1164      */
1165     @JsxGetter
1166     public Function getOndragstart() {
1167         return getEventHandler(Event.TYPE_DRAGSTART);
1168     }
1169 
1170     /**
1171      * Sets the {@code ondragstart} event handler.
1172      * @param dragstart the {@code ondragstart} event handler
1173      */
1174     @JsxSetter
1175     public void setOndragstart(final Object dragstart) {
1176         setEventHandler(Event.TYPE_DRAGSTART, dragstart);
1177     }
1178 
1179     /**
1180      * Returns the {@code onmozfullscreenchange} event handler.
1181      * @return the {@code onmozfullscreenchange} event handler
1182      */
1183     @JsxGetter({FF, FF_ESR})
1184     public Function getOnmozfullscreenchange() {
1185         return getEventHandler(Event.TYPE_MOZFULLSCREENCHANGE);
1186     }
1187 
1188     /**
1189      * Sets the {@code onmozfullscreenchange} event handler.
1190      * @param mozfullscreenchange the {@code onmozfullscreenchange} event handler
1191      */
1192     @JsxSetter({FF, FF_ESR})
1193     public void setOnmozfullscreenchange(final Object mozfullscreenchange) {
1194         setEventHandler(Event.TYPE_MOZFULLSCREENCHANGE, mozfullscreenchange);
1195     }
1196 
1197     /**
1198      * Returns the {@code ondurationchange} event handler.
1199      * @return the {@code ondurationchange} event handler
1200      */
1201     @JsxGetter
1202     public Function getOndurationchange() {
1203         return getEventHandler(Event.TYPE_DURATIONCHANGE);
1204     }
1205 
1206     /**
1207      * Sets the {@code ondurationchange} event handler.
1208      * @param durationchange the {@code ondurationchange} event handler
1209      */
1210     @JsxSetter
1211     public void setOndurationchange(final Object durationchange) {
1212         setEventHandler(Event.TYPE_DURATIONCHANGE, durationchange);
1213     }
1214 
1215     /**
1216      * Returns the {@code onplaying} event handler.
1217      * @return the {@code onplaying} event handler
1218      */
1219     @JsxGetter
1220     public Function getOnplaying() {
1221         return getEventHandler(Event.TYPE_PLAYING);
1222     }
1223 
1224     /**
1225      * Sets the {@code onplaying} event handler.
1226      * @param playing the {@code onplaying} event handler
1227      */
1228     @JsxSetter
1229     public void setOnplaying(final Object playing) {
1230         setEventHandler(Event.TYPE_PLAYING, playing);
1231     }
1232 
1233     /**
1234      * Returns the {@code onload} event handler.
1235      * @return the {@code onload} event handler
1236      */
1237     @JsxGetter
1238     public Function getOnload() {
1239         return getEventHandler(Event.TYPE_LOAD);
1240     }
1241 
1242     /**
1243      * Sets the {@code onload} event handler.
1244      * @param load the {@code onload} event handler
1245      */
1246     @JsxSetter
1247     public void setOnload(final Object load) {
1248         setEventHandler(Event.TYPE_LOAD, load);
1249     }
1250 
1251     /**
1252      * Returns the {@code onended} event handler.
1253      * @return the {@code onended} event handler
1254      */
1255     @JsxGetter
1256     public Function getOnended() {
1257         return getEventHandler(Event.TYPE_ENDED);
1258     }
1259 
1260     /**
1261      * Sets the {@code onended} event handler.
1262      * @param ended the {@code onended} event handler
1263      */
1264     @JsxSetter
1265     public void setOnended(final Object ended) {
1266         setEventHandler(Event.TYPE_ENDED, ended);
1267     }
1268 
1269     /**
1270      * Returns the {@code onloadeddata} event handler.
1271      * @return the {@code onloadeddata} event handler
1272      */
1273     @JsxGetter
1274     public Function getOnloadeddata() {
1275         return getEventHandler(Event.TYPE_LOADEDDATA);
1276     }
1277 
1278     /**
1279      * Sets the {@code onloadeddata} event handler.
1280      * @param loadeddata the {@code onloadeddata} event handler
1281      */
1282     @JsxSetter
1283     public void setOnloadeddata(final Object loadeddata) {
1284         setEventHandler(Event.TYPE_LOADEDDATA, loadeddata);
1285     }
1286 
1287     /**
1288      * Returns the {@code oncopy} event handler.
1289      * @return the {@code oncopy} event handler
1290      */
1291     @JsxGetter
1292     public Function getOncopy() {
1293         return getEventHandler(Event.TYPE_COPY);
1294     }
1295 
1296     /**
1297      * Sets the {@code oncopy} event handler.
1298      * @param copy the {@code oncopy} event handler
1299      */
1300     @JsxSetter
1301     public void setOncopy(final Object copy) {
1302         setEventHandler(Event.TYPE_COPY, copy);
1303     }
1304 
1305     /**
1306      * Returns the {@code onpaste} event handler.
1307      * @return the {@code onpaste} event handler
1308      */
1309     @JsxGetter
1310     public Function getOnpaste() {
1311         return getEventHandler(Event.TYPE_PASTE);
1312     }
1313 
1314     /**
1315      * Sets the {@code onpaste} event handler.
1316      * @param paste the {@code onpaste} event handler
1317      */
1318     @JsxSetter
1319     public void setOnpaste(final Object paste) {
1320         setEventHandler(Event.TYPE_PASTE, paste);
1321     }
1322 
1323     /**
1324      * Returns the {@code onmouseout} event handler.
1325      * @return the {@code onmouseout} event handler
1326      */
1327     @JsxGetter
1328     public Function getOnmouseout() {
1329         return getEventHandler(MouseEvent.TYPE_MOUSE_OUT);
1330     }
1331 
1332     /**
1333      * Sets the {@code onmouseout} event handler.
1334      * @param mouseout the {@code onmouseout} event handler
1335      */
1336     @JsxSetter
1337     public void setOnmouseout(final Object mouseout) {
1338         setEventHandler(MouseEvent.TYPE_MOUSE_OUT, mouseout);
1339     }
1340 
1341     /**
1342      * Returns the {@code onsuspend} event handler.
1343      * @return the {@code onsuspend} event handler
1344      */
1345     @JsxGetter
1346     public Function getOnsuspend() {
1347         return getEventHandler(Event.TYPE_SUSPEND);
1348     }
1349 
1350     /**
1351      * Sets the {@code onsuspend} event handler.
1352      * @param suspend the {@code onsuspend} event handler
1353      */
1354     @JsxSetter
1355     public void setOnsuspend(final Object suspend) {
1356         setEventHandler(Event.TYPE_SUSPEND, suspend);
1357     }
1358 
1359     /**
1360      * Returns the {@code onvolumechange} event handler.
1361      * @return the {@code onvolumechange} event handler
1362      */
1363     @JsxGetter
1364     public Function getOnvolumechange() {
1365         return getEventHandler(Event.TYPE_VOLUMECHANGE);
1366     }
1367 
1368     /**
1369      * Sets the {@code onvolumechange} event handler.
1370      * @param volumechange the {@code onvolumechange} event handler
1371      */
1372     @JsxSetter
1373     public void setOnvolumechange(final Object volumechange) {
1374         setEventHandler(Event.TYPE_VOLUMECHANGE, volumechange);
1375     }
1376 
1377     /**
1378      * Returns the {@code onwaiting} event handler.
1379      * @return the {@code onwaiting} event handler
1380      */
1381     @JsxGetter
1382     public Function getOnwaiting() {
1383         return getEventHandler(Event.TYPE_WAITING);
1384     }
1385 
1386     /**
1387      * Sets the {@code onwaiting} event handler.
1388      * @param waiting the {@code onwaiting} event handler
1389      */
1390     @JsxSetter
1391     public void setOnwaiting(final Object waiting) {
1392         setEventHandler(Event.TYPE_WAITING, waiting);
1393     }
1394 
1395     /**
1396      * Returns the {@code oncanplay} event handler.
1397      * @return the {@code oncanplay} event handler
1398      */
1399     @JsxGetter
1400     public Function getOncanplay() {
1401         return getEventHandler(Event.TYPE_CANPLAY);
1402     }
1403 
1404     /**
1405      * Sets the {@code oncanplay} event handler.
1406      * @param canplay the {@code oncanplay} event handler
1407      */
1408     @JsxSetter
1409     public void setOncanplay(final Object canplay) {
1410         setEventHandler(Event.TYPE_CANPLAY, canplay);
1411     }
1412 
1413     /**
1414      * Returns the {@code onmousedown} event handler.
1415      * @return the {@code onmousedown} event handler
1416      */
1417     @JsxGetter
1418     public Function getOnmousedown() {
1419         return getEventHandler(MouseEvent.TYPE_MOUSE_DOWN);
1420     }
1421 
1422     /**
1423      * Sets the {@code onmousedown} event handler.
1424      * @param mousedown the {@code onmousedown} event handler
1425      */
1426     @JsxSetter
1427     public void setOnmousedown(final Object mousedown) {
1428         setEventHandler(MouseEvent.TYPE_MOUSE_DOWN, mousedown);
1429     }
1430 
1431     /**
1432      * Returns the {@code onemptied} event handler.
1433      * @return the {@code onemptied} event handler
1434      */
1435     @JsxGetter
1436     public Function getOnemptied() {
1437         return getEventHandler(Event.TYPE_EMPTIED);
1438     }
1439 
1440     /**
1441      * Sets the {@code onemptied} event handler.
1442      * @param emptied the {@code onemptied} event handler
1443      */
1444     @JsxSetter
1445     public void setOnemptied(final Object emptied) {
1446         setEventHandler(Event.TYPE_EMPTIED, emptied);
1447     }
1448 
1449     /**
1450      * Returns the {@code gotpointercapture} event handler for this element.
1451      * @return the {@code gotpointercapture} event handler for this element
1452      */
1453     @JsxGetter({CHROME, EDGE})
1454     public Function getOngotpointercapture() {
1455         return getEventHandler(Event.TYPE_GOTPOINTERCAPTURE);
1456     }
1457 
1458     /**
1459      * Sets the {@code gotpointercapture} event handler.
1460      * @param gotpointercapture the {@code gotpointercapture} event handler
1461      */
1462     @JsxSetter({CHROME, EDGE})
1463     public void setOngotpointercapture(final Object gotpointercapture) {
1464         setEventHandler(Event.TYPE_GOTPOINTERCAPTURE, gotpointercapture);
1465     }
1466 
1467     /**
1468      * Returns the {@code onwheel} event handler for this element.
1469      * @return the {@code onwheel} event handler for this element
1470      */
1471     @JsxGetter({CHROME, EDGE})
1472     @Override
1473     public Function getOnwheel() {
1474         return getEventHandler(Event.TYPE_WHEEL);
1475     }
1476 
1477     /**
1478      * Sets the {@code onwheel} event handler for this element.
1479      * @param onwheel the {@code onwheel} event handler for this element
1480      */
1481     @JsxSetter({CHROME, EDGE})
1482     @Override
1483     public void setOnwheel(final Object onwheel) {
1484         setEventHandler(Event.TYPE_WHEEL, onwheel);
1485     }
1486 }