Chrome扩展程序变异运行反应应用程序

时间:2016-04-24 16:32:58

标签: javascript google-chrome reactjs google-chrome-extension

我正在尝试为Chrome改变DOM时间线的DOM。 Chrome扩展程序无法注入由页面创建的var或函数: https://developer.chrome.com/extensions/content_scripts#execution-environment

那么反应应用的可能变化呈现?我正在尝试手动更改文字:

public void updateDetail(String uri){
    String newTime = String.valueOf(System.currentTimeMillis());
    if ( listener != null ){
        listener.onItemSelected(newTime);
    }
}

但之后喜欢组件中断,当我改变反应时,会有与预期相同的文本。任何提示或有可能改变反应DOM而不破坏整个应用程序?

1 个答案:

答案 0 :(得分:2)

React不允许你手动改变DOM,直到它没有明确指定(并且不是你的情况)。

更改组件的DOM表示的唯一方法是更改​​其render()方法。为此,您必须在页面的运行JavaScript中更改函数。

很遗憾(或者幸运的是),由于您的JavaScript代码的安全政策和沙盒,Chrome浏览器未授权使用此功能。

这应该是Google官方对此问题的回答。但是,您可以通过使用JavaScript代码注入<script>标记来改变这一保护,从而改变Facebook页面的DOM中的ReactCompenent行为。这将强制浏览器在主机页面JavaScript VM中执行此代码。我不知道在React初始化之后是否可以更改组件的render()功能,但这是您执行所需操作的唯一希望。

如果您找到了解决方案,请告诉我们,了解React是否可以防止此类入侵,这一点很有趣。