Как навсегда переопределить API JS DOM в WebView? - PullRequest
0 голосов
/ 30 апреля 2018

Предположим, я создаю новый веб-браузер, но хочу перехватывать вызовы определенных функций JS, таких как window.fetch () и XMLHttpRequest и postMessage, чтобы ПРЕДОТВРАТИТЬ определенный фрейм в домене для получения и вывода информации.

Если я просто переопределю эти объекты, не может ли последующий код JS просто вызвать delete window.fetch, чтобы удалить мои переопределения? Есть ли способ заморозить объект или свойство, чтобы предотвратить это в современных мобильных браузерах, или перехватывать вызовы с использованием собственного кода?

В Android Chrome, кажется, есть собственный способ сделать это: https://www.codevog.com/blog/2015-03-09-webview-interactions-with-javascript

Как мне это сделать в Android и iOS?

PS: я знаю, что могу перехватывать запросы, но как мне перехватить вызовы функций, такие как postMessage?

1 Ответ

0 голосов
/ 30 апреля 2018

Я не собираюсь советовать это, но вы можете попробовать патч обезьяны:

XMLHttpRequest = (function(xhtp){
    //do something with xhtp
    //someAPI(xhtp)...
    return null;//or whatever you want
})(XMLHttpRequest);

Я только что написал это ad-hoc. Вы должны убедиться, что все точки входа в этот объект исправлены, как указано выше. В рамках iief передайте его своему API. Твиттер делает это для console.log, они, вероятно, возвращают пустую функцию

...