Обратный вызов из JS -инъекция в WebView не работает - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь перехватить события внутри моего веб-просмотра, используя JS инъекцию. Я делаю все в соответствии с учебниками. Все работает хорошо, пока устройство не будет сброшено до заводских настроек. После сброса к заводским настройкам события не поступают, за исключением самого первого, который вызывается при введении впрыска.

javascript: (function() {
    Android.sendMessage();

    let methodRes = "";
    let typeRes = "";
    let formData = "";
    let xhr = window.XMLHttpRequest.prototype;
    let open = xhr.open;
    xhr.open = function(method, url, async, user, password) {
        methodRes = method;
        typeRes = url;
        open.call(this, method, url, async, user, password);
    };
    let send = xhr.send;
    xhr.send = function(postData) {
        formData = postData;
        this.addEventListener("load", function() {
            let message = { method: methodRes, url: typeRes, data: formData, response: this.responseText };
            Android.sendMessage(JSON.stringify(message));
        });
        send.call(this, postData);
    };

    let ws = window.WebSocket;
    window.WebSocket = function(a, b) {
        var that = b ? new ws(a, b) : new ws(a);
        that.addEventListener('message', function(msg) {
            var message = msg.data;
            Android.sendMessage(message, true);
        });
        return that;
    };
    window.WebSocket.prototype = ws.prototype;
})()
...