通过JavaScript动态地在头文件或HTML中包含脚本元素

时间:2013-07-13 23:28:50

标签: javascript gwt

我有第三方JavaScript库的脚本,需要动态注入令牌。

我被告知将下面的脚本包含在我的html的头部。我需要替换{your_token}才能使其正常工作。但是,此令牌仅在运行时可用,因此我需要在运行时将此脚本注入应用程序的标头(应用程序代码的init)

  

<script>(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel={your_token}...

使用权限令牌替换your_token并将此脚本注入应用程序标头的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

正如Casey所说,这取决于这个脚本块的来源?

  1. 后端替换

    如果您使用任何后端模板引擎,您可能有机会将该令牌替换为您手头的令牌。因此输出将是脚本包含脚本所需的真实令牌。

  2. 前端更换

    如果您正在使用前面的某个模板,例如使用手柄模板(其他模板引擎的工作方式几乎相同)<script type="text/x-handlebars-template">your third party js code <token here></script>,则可以在生成dom元素时替换该标记。

  3. 对我来说,我更喜欢在后端这样做。

答案 1 :(得分:1)

假设“此令牌仅在运行时可用”表示“来自onModuleLoad”(无论出于何种原因),那么您可以在GWT应用程序中将脚本作为String(您可能想要在ClientBundle中使用TextResource脚本,或在代码中只使用String常量),将{your_token}替换为String#replace,然后注入生成的脚本包含ScriptInjector.fromString

虽然可以,但请使用“后端替换”as proposed by Mike Lidynamic host page