2017-07-26 176 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

相关问题