我有第三方JavaScript库的脚本,需要动态注入令牌。
我被告知将下面的脚本包含在我的html的头部。我需要替换{your_token}才能使其正常工作。但是,此令牌仅在运行时可用,因此我需要在运行时将此脚本注入应用程序的标头(应用程序代码的init)
<script>(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel={your_token}...
使用权限令牌替换your_token并将此脚本注入应用程序标头的最佳方法是什么?
答案 0 :(得分:2)
正如Casey所说,这取决于这个脚本块的来源?
后端替换
如果您使用任何后端模板引擎,您可能有机会将该令牌替换为您手头的令牌。因此输出将是脚本包含脚本所需的真实令牌。
前端更换
如果您正在使用前面的某个模板,例如使用手柄模板(其他模板引擎的工作方式几乎相同)<script type="text/x-handlebars-template">your third party js code <token here></script>
,则可以在生成dom元素时替换该标记。
对我来说,我更喜欢在后端这样做。
答案 1 :(得分:1)
假设“此令牌仅在运行时可用”表示“来自onModuleLoad
”(无论出于何种原因),那么您可以在GWT应用程序中将脚本作为String
(您可能想要在ClientBundle
中使用TextResource
脚本,或在代码中只使用String
常量),将{your_token}
替换为String#replace
,然后注入生成的脚本包含ScriptInjector.fromString
。
虽然可以,但请使用“后端替换”as proposed by Mike Li和dynamic host page。