2013-07-13 55 views
0

我有第三方JavaScript庫的腳本,它需要動態注入令牌。通過JavaScript動態地在頁眉或HTML中包含腳本元素

我被告知將下面的腳本包含到我的html頭部。我需要替換{your_token}才能使其工作。然而這個令牌僅在運行時可用,所以我需要注入這個劇本到我的應用程序的頭在運行時(INIT的應用程序代碼)

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

什麼是替代的最佳方式your_token使用正確的標記並在應用程序的頭部插入此腳本?

+1

您的意思是爲您的視圖中的「{your_token}」注入一個值嗎?您是否在服務器上使用模板來構建HTML輸出? –

回答

1

假設「此令牌只可在運行時」是指「從onModuleLoad」(無論哪個原因),那麼你可以有腳本作爲String在您的GWT應用程序(你可能想使用帶有一個ClientBundle腳本在TextResource中,或簡單地在您的代碼中爲String常量),請將{your_token}替換爲String#replace,然後將結果腳本注入ScriptInjector.fromString

雖然可以,但使用「後端替換」as proposed by Mike Lidynamic host page

2

就像凱西問,它取決於這個腳本塊來自哪裏?

  1. 後端更換

    如果你使用任何後端模板引擎,你可能有機會取代該令牌到你手上有一個。所以輸出將是腳本包含腳本所需的真實令牌。

  2. 前端更換

    如果使用在前面一些模板,例如使用車把模板(其他模板引擎的工作幾乎相同)<script type="text/x-handlebars-template">your third party js code <token here></script>,可以生成DOM元素時替換令牌。

對我而言,我更喜歡在後端做這件事。

相關問題