mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:17:46 +00:00
LibWeb: Basic implementation of global event handlers :^)
Document and HTMLElement now inherit from HTML::GlobalEventHandlers which allows them to support "onfoo" event handler attributes. These are assignable both via IDL attributes and content attributes. Event listeners constructed this way get a special "attribute" flag on them so we know which one to replace if you reassign them. This also allows them to coexist with EventTarget.addEventListener(). This is all a bit sloppy, but it works decently for a first cut. The Window object should also inherit GlobalEventHandlers, but since we don't generate it from IDL, I haven't taken that step here. Also this would be a lot nicer if we supported IDL mixins.
This commit is contained in:
parent
b43db4cc50
commit
a59b1825ce
15 changed files with 391 additions and 2 deletions
|
@ -55,6 +55,7 @@ enum class QuirksMode {
|
|||
class Document
|
||||
: public ParentNode
|
||||
, public NonElementParentNode<Document>
|
||||
, public HTML::GlobalEventHandlers
|
||||
, public Bindings::ScriptExecutionContext {
|
||||
public:
|
||||
using WrapperType = Bindings::DocumentWrapper;
|
||||
|
@ -233,8 +234,12 @@ public:
|
|||
private:
|
||||
explicit Document(const URL&);
|
||||
|
||||
// ^DOM::Node
|
||||
virtual RefPtr<Layout::Node> create_layout_node() override;
|
||||
|
||||
// ^HTML::GlobalEventHandlers
|
||||
virtual EventTarget& global_event_handlers_to_event_target() final { return *this; }
|
||||
|
||||
void tear_down_layout_tree();
|
||||
|
||||
void increment_referencing_node_count()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue