1

私は SC HTML5 プレーヤーを使用しています。1 つのサウンドが終了すると、別のソースをロードしますが、FINISH イベントは最初の曲に対してのみ発生するようです。私のコードは次のとおりです。

//Set the source
document.getElementById("sc-widget").src = scPath;
//get the widget reference
var widgetIframe = document.getElementById('sc-widget'),
widget       = SC.Widget(widgetIframe);
//set the finish event
widget.bind(SC.Widget.Events.FINISH, endSC);

function endSC() {
                    var scPath = "http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F1848538&show_artwork=true&auto_play=true";
                    document.getElementById("sc-widget").src = scPath;
                    var widgetIframe = document.getElementById('sc-widget'),
                    widget       = SC.Widget(widgetIframe);
                    widget.bind(SC.Widget.Events.FINISH, endSC);
}

endSC ターゲットを別の関数に設定しようとしましたが、うまくいきません。ありがとう!

4

1 に答える 1

2

私も同じ問題を抱えていました。SC.Widget メソッドは、最初に呼び出したときは正常に動作していますが、2 回目に呼び出そうとすると、コンソールで "Uncaught TypeError: Cannot read property 'parentWindow' of null" エラーがhttp://で発生します。 w.soundcloud.com/player/api.jsスクリプト。そして、ここで api.js スクリプトがアクション (.Widget、.bind など) で停止します。

解決策を見つけました。それは非常に奇妙ですが、それは解決策です。SoundCloud リモート スクリプトは縮小されています。ブラウザーにロードし、オンラインの js ビューティファイアーで C/P して、ローカルに保存します。103行目を次のように編集します。

return a.contentWindow;// || a.contentDocument.parentWindow

だから私はその .parentWindow 呼び出しを削除しました。

ファイルを保存し、ページの head セクションで呼び出します。以上です!ロードされたすべてのウィジェットで FINISH イベントが発生するようになりました。

これが役立つことを願っています。

于 2012-07-02T12:48:58.210 に答える