Изменение DOM на странице React из расширения Chrome - PullRequest
0 голосов
/ 03 мая 2019

Я конвертирую существующий сайт из jQuery и т. Д. В сайт React.У меня также есть расширение Chrome, которое работает специально для этого сайта, поэтому у меня есть доступ к обеим сторонам этого.У меня проблема в том, что расширение Chrome не будет обновлять DOM на сайте React, и это важно для его функционирования.

Исходный сайт правильно работал с этим в расширении Chrome:

var tab = yield browser.createTab('localhost:3000/dashboard', this.window);
console.log('Delay 3000');
yield this.delay(3000, 3000);
var showProRunning = yield browser.runCodeOnTab(tab, `$('#isProRunning').val('yes')`);

Сайт React не работает с этим:

var tab = yield browser.createTab('localhost:3000/dashboard', this.window);
console.log('Delay 3000');
yield this.delay(3000, 3000);
var showProRunning = yield browser.runCodeOnTab(tab, `document.getElementById('isProRunning').value='yes'`);

Трехсекундная задержка является временным взломом, чтобы убедиться, что весь DOM загружен до того, как расширение попытается что-либо сделать.с этим.Я ожидаю, что расширение Chrome сможет получить доступ к скрытому полю ввода 'isProRunning' и обновить его значение, но этого не происходит.Любая помощь будет принята с благодарностью!

- РЕДАКТИРОВАТЬ - Основываясь на комментарии wOxxOm, я понял, что это работает так:

yield browser.runCodeOnTab(tab, `document.getElementById('isProRunning').focus()`);
yield browser.runCodeOnTab(tab, `document.execCommand('insertText', false, '1')`);

Вместо того, чтобы использовать скрытый ввод, мне пришлось использовать тексти скрыть его в div с высотой и шириной 0. Попытка обновить скрытый ввод не сработала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...