#javascript #android #webview #android-webview
#javascript #Android #webview #android-webview
Вопрос:
Я отлаживаю проблему на устройстве Android. (с использованием эмулятора, но он воспроизводится на многих устройствах). Я открываю свою страницу с помощью браузера Android WebView
WebView in com.google.android.gms (39.0.0.0)
Я выбираю body
элемент и успешно считываю его childNodes
свойство.
Но я не могу найти childNodes
получатель ни на Node.prototype
, ни на его родителях в цепочке прототипов.
const el = document.querySelector('body')
undefined
el instanceof Node
true
el instanceof HTMLBodyElement
true
el instanceof HTMLElement
true
el.childNodes.length
61
Object.getOwnPropertyDescriptor(Node.prototype,'childNodes')
undefined
Object.getOwnPropertyDescriptor(HTMLBodyElement.prototype,'childNodes')
undefined
Object.getOwnPropertyDescriptor(HTMLElement.prototype,'childNodes')
undefined
Цепочка прототипов элементов тела:
HTMLBodyElement
HTMLElement
Element
Node
EventTarget
Object
null
childNodes
не существует ни Object.getOwnPropertyDescriptor
на одном из них.
Есть ли у меня способ узнать, как это childNodes
свойство добавляется к Node.prototype
и, чтобы получить эту функцию?
Комментарии:
1. Привет. Получили ли вы какое-либо решение этой проблемы
2. Эй, @Karthikkumar, мне не удалось решить эту проблему, но я нашел определенный обходной путь. Я обновил свой ответ и надеюсь, что это поможет.
Ответ №1:
Я не нашел способа получить функцию getter в этих конкретных старых браузерах (я предполагаю, что это функция браузера, которая блокирует доступ к ним).
Вместо этого я сделал своего рода обходной путь:
const descriptor = Object.getOwnPropertyDescriptor(object, functionName);
if (descriptor?.get) {
return descriptor.get;
}
if (descriptor?.value) {
return descriptor.value;
}
// if no access - just a return a function that returns this property
return function () {
return this[functionName];
};