2017-07-26 163 views
0

我包括viostream API JS在我的項目的head庫,這樣我就可以在js文件使用對象viostreamPlayer如何重新加載外部JavaScript庫,而無需重新加載

<head> 
    ... 
    <script src='https://publish.viostream.com/embed/api'></script> 
</head> 

我需要調用embed功能兩次在js和沒有重新加載頁面。但是,第二次使用viostreamPlayer會導致一些問題。

因此,我想在第二次使用之前重新加載api庫。確保viostreamPlayer對象新鮮並且可以隨時使用。


更多細節:

我用backbone.js加載視頻觀看頁面,並通過後加載JS另一個視頻來看,我應該更新的視頻內容。這就是爲什麼我需要撥打embed兩次,這是加載另一個視頻。新視頻已成功嵌入,但所有事件處理程序均失敗。由js加載頁面無法重新加載head

事件處理程序通過調用on方法添加viostreamPlayer

viostreamPlayer.on('play', function(){})

但其沒有工作,當我嵌入第二個視頻。這就是爲什麼我要在調用embed函數之前尋找確保viostreamPlayer新鮮的方法。

文檔:https://help.viostream.com/hc/en-us/articles/223291607-Embedding-and-using-the-Player-API

乾杯

更新

ViostreamPlayer已經更新了API,以便將錯誤不再存在。

+0

「然而,使用viostreamPlayer第二時間會導致一些問題。」。究竟是什麼問題? –

+0

嗨@CharlieFish,我在'More details'中解釋過,問題是所有的事件監聽器都無法正確設置並失去作用 – Stephen

+0

您是否試過聯繫他們的支持?看起來像一個付費產品。他們應該提供支持。我不知道爲什麼你需要重新加載腳本。聽起來更像是他們劇本中的一個問題。 –

回答

0

如果您使用的是jQuery,您可以使用$.getScript()來重新加載。

實施例:

setTimeout(() => { 
    $.getScript("https://publish.viostream.com/embed/api?1") 
     .done(function (script, textStatus) { 
      console.log(textStatus); 
     }) 
     .fail(function (jqxhr, settings, exception) { 
      console.log.("Triggered ajaxError handler."); 
     }); 
}, 1000); 
+0

謝謝你的回答@Arunesh Saxena。但是,我發現'getScript'函數無法重新加載腳本。例如,這個js將包含一個對象'viostreamPlayer',並且在getScript方法之前添加一個'delete viostreamPlayer',你可以看到它不會再創建對象 – Stephen

相關問題