2016-11-19 7 views
0

私には特有の問題があります。複数の注射で再実行するために、ajax経由で強制注入されたjavascriptアセット

$.ajax("cdn.example.com/widget.js", { 
    dataType: 'script', 
    cache: false 
}).then(function() { 
    console.log(window.widgetRenderTime); 
}) 

私は、Webアプリの特定のポイントに到達すると、私は上記のコードを使用してウィジェットをロードします。私は、特定のjavascriptの資産をロードする責任があり、ウィジェットローダを持っています。上記のコードは、widget.jsの実例である

const timestamp = "hi" + new Date().getTime(); 

window.widgetRenderTime = timestamp; 

:ここでウィジェットがどのように見えるかです。ウィジェットがダウンロードされてページに挿入される時点まで、すべてがうまくいきます。

ウィジェットから離れて移動した場合、ウィジェットが呼び出されるポイントに戻る再び、ソースはページ内で既に評価されているため、コードは再実行されません。したがって、 "widgetRenderTime"は実際にウィジェットが呼び出された最初のレンダリング時刻です。

ウェブページに挿入されたjavascriptアセットを削除して再実行する方法はありますか?キャッシュの破損が発生しているため、Chromeのソースタブに新しいアセットが表示されますが、実際には実行されません。

希望はこれが理にかなっています。

+0

ajax呼び出しが実行される場所を表示できますか? – deiga

+0

本当に問題ではありません。特定のボタンを押すと呼び出されると想像することができます。外部jsアセットが読み込まれます。もう一度ボタンを押すと、外部アセットが既にロードされており、そのファイル内のコードを再評価しません –

答えて

0

さて、私はあなたの問題や課題についてjsfiddleを作っtimestampがすでに定義されたため、エラーの出てきたこと、であるように思わ:https://jsfiddle.net/deiga/d8h1d6j2/8/

それを行うための適切な方法は、あなたのように、あなたの変数を名前空間になりますグローバル名前空間を汚染しない

関連する問題