我正在将现有站点从jQuery等转换为React站点。我还有一个专门用于此网站的Chrome扩展程序,因此我可以访问此网站的两端。我遇到的问题是Chrome扩展程序不会更新React网站上的DOM,这对于它的正常运行至关重要。
原始网站可以在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'`);
这里有3秒的延迟,这是暂时的黑客行为,以确保在扩展尝试对其执行任何操作之前,已加载所有DOM。我希望Chrome扩展程序能够访问隐藏的输入字段“ isProRunning”并更新其值,但是不会发生。任何帮助将不胜感激!
-编辑- 根据wOxxOm的评论,我可以这样工作:
yield browser.runCodeOnTab(tab, `document.getElementById('isProRunning').focus()`);
yield browser.runCodeOnTab(tab, `document.execCommand('insertText', false, '1')`);
我不得不使用文本输入,而不是使用隐藏的输入,而是将其隐藏在高度和宽度为0的div中。尝试更新隐藏的输入无效。