0

Web アプリを開発しており、オーディオ ファイルを再生する必要があります。この場合、オーディオ オブジェクトのプロパティ、メソッド、およびイベントをいくつかのカスタム メソッドとマージするオブジェクトを作成しようとしています。

次のオブジェクトを作成しました。

<script type="text/javascript">
var AUDIO = {
    track: false,
    init: function(audioElement, fn) {
        var _this = this;
            _this.track = document.getElementById(audioElement) || false;

        if (!window.HTMLAudioElement) {
            alert(HELPER.translate('audio-load-error'));
            _this.track = false;
        }
        else {
            AUDIO.track.onloadedmetadata = (function() {
                _this.callback(fn);
            })();
        }

        return _this.track;  
    },
    on: function(eventName,fn) {
        var _this = this;   
        var listener = function(event) {
            _this.track.removeEventListener(eventName, listener, false);       
        }
        _this.track.addEventListener(eventName, listener, false);
    },
    callback: function(fn) {
        if (typeof fn == 'function') fn.call(this);
        if (typeof fn == 'object') $.execCallback(fn);      
    }

}
</script>

OK、今私は自分のメソッドを次のように呼んでいます:

<script type="text/javascript">
AUDIO.init('audio-course', function(){
    console.log(AUDIO.track);
});
</script>

私が欲しいのは、AUDIO.track を AUDIO.init() によって返される変数として渡すことができるので、次のようなものを使用できるということですか?:

<script type="text/javascript">
AUDIO.init('audio-course', function(returnedAudioObject){
    console.log(returnedAudioObject.duration);
});
</script>

もし可能でしたら、一番簡単な方法を教えてください。前もって感謝します!

4

1 に答える 1

0

これが欲しいだけだと思いますか?

if (typeof fn == 'function') fn.call(this, this.track)

その後returnedAudioObjectになりますAUDIO.track

于 2013-10-13T00:52:57.250 に答える