GWT 2.5.1 终于解决了这个问题。记录这一点的发行说明在这里:
https://developers.google.com/web-toolkit/release-notes#Release_Notes_2_5_1
他们指出:
“使用 DirectInstallLinker 构建的应用程序应该在禁止内联脚本的页面中运行(例如 Chrome 扩展)”
这意味着现在可以使用 DirectInstallLinker 以满足清单版本 2 有关内联脚本的新安全要求的方式链接您的 Chrome 打包应用程序。也就是说,通过使用 DirectInstallLinker 将您的应用程序与选择作为 GWT 版本的 GWT 2.5.1 链接,GWT 不会在其生成的 Javascript 中内联放置任何脚本元素,因此新的清单版本 2 要求没有内联脚本将不会被侵犯。
我发现 SingleScriptLinker 似乎也适用于我自己的应用程序;但是,问题 7685 警告不要使用 SingleScriptLinker,因为“这会生成打包应用程序中禁止的 $doc.write 行”。我自己正在使用 DirectInstallLinker。
以下是 DirectInstallLinker 的 Javadoc:
http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/core/linker/DirectInstallLinker.html
要使用此链接器,您可以在 *.gwt.xml 文件中包含以下内容:
<define-linker name="dil" class="com.google.gwt.core.linker.DirectInstallLinker"/>
<add-linker name="dil" />
(dil 可以替换为您选择的任何内容,只要没有破折号或其他非法字符)。
您需要选择 GWT 2.5.1 作为您的 GWT 版本。如果您在过时版本的 Eclipse 中使用旧版本的 GWT,例如 Ganymede(就像我一样),则必须至少升级到 Helios,然后将项目导入到新的 Eclipse 环境中。可用于最新三个 Eclipse 版本的 Google Plugin for Eclipse 的存档 URL 可以在此处找到:
https://developers.google.com/eclipse/docs/download
完成上述设置后,您应该能够设置
"manifest_version": 2
在您的manifest.json文件中,并且不会因为GWT生成的内联Javascript而遇到任何错误。只要没有其他问题,这应该允许您的 Chrome Web 应用程序被 Chrome Web Store 接受(现在任何新应用程序或现有应用程序的更新都需要清单版本 2)。