【问题标题】:SoundCloud embedded track: How to refresh page after the track ends playing?SoundCloud 内嵌曲目:曲目播放结束后如何刷新页面?
【发布时间】:2017-04-18 03:59:20
【问题描述】:

首先,我是个菜鸟。

好的,所以我在网页中嵌入了 SoundCloud 曲目。我的问题是,当曲目结束时,您如何刷新页面(或执行其他操作)?

你能用 getDuration 来做吗(我在 SoundCloud API 页面上找到的)?

我尝试编写代码。在代码中,我尝试获取曲目的持续时间,然后将其打印在屏幕/网页上。这段代码有什么问题?

<script src="https://w.soundcloud.com/player/api.js" type="text/javascript"></script>
<span id="headerLeft-content">
    <script type="text/javascript">
        var duration = 0;
        (function(){
              var widgetIframe = document.getElementById('sc-widget'),
              widget = SC.Widget(widgetIframe);
              widget.bind(SC.Widget.Events.READY, function() {
                widget.getDuration(function(val) {
                  duration = val;
                });
              });
        }());

        document.write(duration);
    </script>
</span>

如果可行,我会输入类似 wait(duration) 之类的内容,然后刷新...

换句话说,即使原始小部件不支持循环,soundcloud 嵌入式轨道是否可以被“破解”以循环(或在轨道结束后刷新页面,这就是我想要做的)?

请查看我找到 getDuration 命令的 SoundCloud html5 小部件页面,看看您是否可以帮助我... => http://developers.soundcloud.com/docs/api/html5-widget#getters

编辑:

<script>
var html=<iframe blablabla...></iframe>
document.write(html);
</script>

<script src="https://w.soundcloud.com/player/api.js" type="text/javascript"></script>
<script type="text/javascript">
  (function(){
    var widgetIframe = document.getElementById('sc-widget'),
        widget       = SC.Widget(widgetIframe),
    widget.bind(SC.Widget.FINISH, function() {
          window.location.reload(false);
    });
  }());
</script>

曲目结束后页面不刷新。你能看出什么问题吗?

【问题讨论】:

    标签: html widget embed embedded-resource soundcloud


    【解决方案1】:

    您可以将函数绑定到SC.Widget.FINISH 事件documented here。以下代码 sn-p 应该可以工作:

    widget.bind(SC.Widget.FINISH, function() {
        window.location.reload(false);
    });
    

    当然,如果您只想让小部件循环,您可以使用seekToplay 方法:

    widget.bind(SC.Widget.FINISH, function() {
        // again, again!
        widget.seekTo(0);
        widget.play();
    });
    

    这会比页面刷新更少干扰。

    【讨论】:

    • 感谢您的回复!我的代码现在看起来像这样,但它似乎不起作用(查看帖子中的 EDIT 部分)
    【解决方案2】:
    widget.bind(SC.Widget.Event.FINISH, function() {
        widget.seekTo(0);
        widget.play();
    });
    

    在另一个回复中,第一个参数缺少“.Event”。

    【讨论】:

      【解决方案3】:

      终于。一个真正有效的版本。

      var widgetIframe = document.getElementById("soundcloud"),
          widget       = SC.Widget(widgetIframe);
      
      widget.bind(SC.Widget.Events.FINISH, function() {
          widget.play();
      });
      

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        • 2021-01-16
        • 2020-06-08
        • 1970-01-01
        相关资源
        最近更新 更多