我正在尝试为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而不破坏整个应用程序?
答案 0 :(得分:2)
React不允许你手动改变DOM,直到它没有明确指定(并且不是你的情况)。
更改组件的DOM表示的唯一方法是更改其render()
方法。为此,您必须在页面的运行JavaScript中更改函数。
很遗憾(或者幸运的是),由于您的JavaScript代码的安全政策和沙盒,Chrome浏览器未授权使用此功能。
这应该是Google官方对此问题的回答。但是,您可以通过使用JavaScript代码注入<script>
标记来改变这一保护,从而改变Facebook页面的DOM中的ReactCompenent行为。这将强制浏览器在主机页面JavaScript VM中执行此代码。我不知道在React初始化之后是否可以更改组件的render()
功能,但这是您执行所需操作的唯一希望。
如果您找到了解决方案,请告诉我们,了解React是否可以防止此类入侵,这一点很有趣。