从Chrome扩展程序更改React页面上的DOM

时间:2019-05-03 17:02:02

标签: reactjs google-chrome-extension

我正在将现有站点从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中。尝试更新隐藏的输入无效。

0 个答案:

没有答案