2013-05-02 31 views
8

Tôi đang sử dụng JWPlayer. Sau khi thiết lập các cầu thủ tôi cần phải thêm người nghe đến một số sự kiện, để đưa ra một ví dụ tôi nghe events.JWPLAYER_MEDIA_TIME như vậy:Làm cách nào để xóa trình xử lý sự kiện khỏi cá thể JWPlayer?

jwplayer('video-container').onTime(this.onTimeHandler); 

Sau một thời gian tôi cần phải loại bỏ sự kiện này nghe, đọc documentation Tôi couldn' t tìm thấy bất kỳ giải pháp.

+0

bạn đã thử 'jwplayer ('video-container'). OnTime (null);' ?? – yogi

+0

hi @yogi, nó không hoạt động. 'Jwplayer.onTime()' liên kết một hàm với một sự kiện, tôi không thể tìm ra cách để loại bỏ ràng buộc này ... –

Trả lời

8

Looking at the code, có vẻ như không thể xóa trình xử lý sự kiện: gọi lại onTime (hoặc bất kỳ phương pháp nào khác để thiết lập trình xử lý sự kiện), vì vậy hãy gọi nó lần thứ hai không ' t ghi đè lên một người nghe trước đó nhưng chỉ thêm một người nghe mới vào mảng.

Có lẽ một sự thay thế có thể là để thiết lập một lá cờ một lần nghe của bạn không nhất thiết phải thực hiện nhiệm vụ của mình nữa:

onTimeHandler : function() { 
    if (! this.handleOnTimeEvents) 
    return; 
    ... 
} 
+0

Cảm ơn bạn @robertklep, đó là những gì tôi đang làm, nhưng tôi cần tìm cách để loại bỏ người nghe hoàn toàn, nó trông không đẹp nếu bạn thêm một số người nghe vào onTime (được gọi khoảng 10 lần một giây) và tiếp tục thêm các cờ toàn cục để ngăn chặn mã thực thi. Như đã nói 'it_works! = Is_pretty';) (bình chọn cho sự sẵn sàng để đưa ra giải pháp làm việc) –

0

Dưới đây là cách tôi xử lý nó. tạo chức năng giả có mục đích duy nhất là trở thành con trỏ. Tôi lo ngại với sự kiện onComplete, vì vậy tôi đã viết code như vậy dưới đây:

function createJWPlayer(surl, stitle, autos, pw, ph) { 
    jwplayer("videocontainer").setup({ 
     file: surl, 
     title: stitle, 
     width: pw, 
     height: ph, 
     autostart: autos, 
     stretching: "uniform", 
     skin: "/Scripts/JWPlayer/six.xml" 
    }); 
    jwplayer().onComplete(function (e) { 
      jwcompleteevent(e); 
     }); 
} 

function jwcompleteevent(e) { 
    // method to remain empty, sole purpose is to provide a pointer for the handler 
} 

Sau đó, trong chức năng mà tôi tạo ra nó, tôi đã viết này:

var mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA; 
createJWPlayer(selobj.Upath, ti.TestTitle, true, "100%", "100%"); 
jwcompleteevent = mcomplete; 

Nếu tôi cần thiết để tải khác video, tôi sẽ làm điều này

mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA; 
jwcompleteevent = mcomplete; 
loadJwPlayerUrl(selobj.Upath, true); 

Nếu bất cứ ai nhìn thấy một vấn đề với điều này, xin vui lòng cho tôi biết, có vẻ như được làm việc khi cần thiết trong môi trường phát triển

Các vấn đề liên quan