Javascript Extjs、Chrome扩展和内容安全策略

Javascript Extjs、Chrome扩展和内容安全策略,javascript,google-chrome,extjs,google-chrome-extension,Javascript,Google Chrome,Extjs,Google Chrome Extension,我正在尝试用ExtJS5.1.0开发一个Google Chrome扩展 当我试图将ext-all.js添加到默认弹出式html中时,我发现Google chrome扩展无法再使用动态脚本求值技术,如eval()或new Function(),也无法将js代码字符串传递给会导致使用eval()的函数,如setTimeout() 因此,在安装过程中,google chrome调试器返回以下错误: 拒绝将字符串作为JavaScript求值,因为“不安全求值”为 不允许以下内容安全中的脚本源 策略指令:

我正在尝试用ExtJS5.1.0开发一个Google Chrome扩展

当我试图将ext-all.js添加到默认弹出式html中时,我发现Google chrome扩展无法再使用动态脚本求值技术,如eval()或new Function(),也无法将js代码字符串传递给会导致使用eval()的函数,如setTimeout()

因此,在安装过程中,google chrome调试器返回以下错误:

拒绝将字符串作为JavaScript求值,因为“不安全求值”为 不允许以下内容安全中的脚本源 策略指令:“脚本src‘self’chrome扩展资源:”。
ext all debug.js:8742 ext.ClassManager.ext.apply.getInstantiator

这是一段错误的代码

        getInstantiator: function(length) {
            var instantiators = this.instantiators,
                instantiator, i, args;
            instantiator = instantiators[length];
            if (!instantiator) {
                i = length;
                args = [];
                for (i = 0; i < length; i++) {
                    args.push('a[' + i + ']');
                }

                // The problem is here 
                instantiator = instantiators[length] = new Function('c','a','return new c(' + args.join(',') + ')');

                instantiator.name = "Ext.create" + length;
            }
            return instantiator;
        },
将这一行添加到
manifest.json
中允许使用动态脚本评估技术(但这是危险的)

所以,我想保留标准的谷歌浏览器安全权限。
有办法解决这个问题吗?

您可以看看这里概述的
沙盒方法:

这是关于Chrome应用程序的,但原则仍然适用。您可以使用清单中的创建一个沙盒页面,将其嵌入到页面中,并使用
postMessage
安全地与其通信。沙盒页面无法运行提升权限的Chrome API,使eval使用起来更安全

同样,Chrome文档中有一篇命名恰当的文章:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"