我试图在页面加载/
之后将React脚本注入网站我能够在大多数网站上使用它,例如 https://google.com , https://discovercard.com , https://stackoverflow.com , https://capitalone.com 。
但是,当我在 https://chase.com 或 https://bankofamerica.com 中执行相同的脚本时,我得到一个引用错误,我正在使用{转换JSX {1}}因为Babel.transform
未定义。
然后可以在网络选项卡和DOM中看到所有必需的脚本。
如果HTML中有任何特定标记或属性阻止在这些网站上执行Javascript,有人可以告诉我。看起来银行网站这样做是为了防止外部Javascript。
以下是我在开发者控制台上尝试的代码
注意: Hello World!因Babel
setTimeout
答案 0 :(得分:2)
两个不起作用的网站正在使用requireJs,因此不是在窗口上加载模块,而是使用define
加载它们。
简单的做法就是在脚本的其余部分之前调用define = undefined
,它就像在其他网站上一样工作。为安全起见,UMD加载程序似乎也会检查exports和modules.exports,因此您可能还希望将它们设置为undefined。
define = undefined;
exports = undefined;
if (window.module) module.exports = undefined;
您正在使用的库使用通用模块定义打包在一起。这样他们就可以使用各种各样的模块加载器,例如requireJs。 UMD模式查找模块加载器定义的公共变量,因此通过将这些变量设置为undefined,可以使模块全局加载,并可以按脚本访问脚本。