From b23063bb5200bb1fc6a64e9e811ab1191d114fd9 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Fri, 21 Feb 2020 18:40:16 +0000 Subject: JS Generics: Add a NodeMap proxy builder Signed-off-by: Daniel Silverstone --- content/handlers/javascript/duktape/generics.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'content/handlers') diff --git a/content/handlers/javascript/duktape/generics.js b/content/handlers/javascript/duktape/generics.js index 29beffc2c..e6e952a46 100644 --- a/content/handlers/javascript/duktape/generics.js +++ b/content/handlers/javascript/duktape/generics.js @@ -27,6 +27,29 @@ var NetSurf = { }, }); }, + /* The make-proxy call for nodemap-type objects */ + makeNodeMapProxy: function(inner) { + return new Proxy(inner, { + has: function(target, key) { + if (typeof key == 'number') { + return (key >= 0) && (key < target.length); + } else { + return target.getNamedItem(key) || (key in target); + } + }, + get: function(target, key) { + if (typeof key == 'number') { + return target.item(key); + } else { + var attr = target.getNamedItem(key); + if (attr) { + return attr; + } + return target[key]; + } + }, + }); + }, consoleFormatter: function Formatter() { if (arguments.length == 0) { -- cgit v1.2.3