mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-01 20:10:28 +00:00
LibWeb: Implement Document.getElementById()
This was pleasantly simple! We don't have an ElementWrapper yet, so it just returns a NodeWrapper, but it still basically works. :^)
This commit is contained in:
parent
1c406294fc
commit
b5a22fc408
Notes:
sideshowbarker
2024-07-19 08:18:50 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/b5a22fc408a
3 changed files with 14 additions and 3 deletions
|
@ -4,9 +4,8 @@
|
|||
<body>
|
||||
<div id="foo"></div>
|
||||
<script>
|
||||
alert(document.nodeName);
|
||||
//var e = document.getElementById("foo");
|
||||
//alert(e.nodeName);
|
||||
var e = document.getElementById("foo");
|
||||
alert(e.nodeName);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <LibJS/Value.h>
|
||||
#include <LibWeb/Bindings/DocumentWrapper.h>
|
||||
#include <LibWeb/DOM/Document.h>
|
||||
#include <LibWeb/DOM/Element.h>
|
||||
|
||||
namespace Web {
|
||||
namespace Bindings {
|
||||
|
@ -9,6 +10,15 @@ namespace Bindings {
|
|||
DocumentWrapper::DocumentWrapper(Document& document)
|
||||
: NodeWrapper(document)
|
||||
{
|
||||
put_native_function("getElementById", [this](JS::Interpreter&, Vector<JS::Value> arguments) -> JS::Value {
|
||||
if (arguments.is_empty())
|
||||
return JS::js_null();
|
||||
auto id = arguments[0].to_string();
|
||||
auto* element = node().get_element_by_id(id);
|
||||
if (!element)
|
||||
return JS::js_null();
|
||||
return wrap(heap(), const_cast<Element&>(*element));
|
||||
});
|
||||
}
|
||||
|
||||
DocumentWrapper::~DocumentWrapper()
|
||||
|
|
|
@ -58,6 +58,8 @@ class Node
|
|||
: public TreeNode<Node>
|
||||
, public Bindings::Wrappable {
|
||||
public:
|
||||
using WrapperType = Bindings::NodeWrapper;
|
||||
|
||||
virtual ~Node();
|
||||
|
||||
NodeType type() const { return m_type; }
|
||||
|
|
Loading…
Reference in a new issue