2012-07-18 26 views
8

Tôi có một div có video Youtube được nhúng qua khung nội tuyến.'__flash__removeCallback' không được xác định khi xóa phần tử DOM có khung nội tuyến Youtube

<div id="container"> 
    <div id="video"> 
     <iframe width="480" height="360" src="http://www.youtube.com/embed/LiyQ8bvLzIE" frameborder="0" allowfullscreen></iframe> 
    </div> 
</div> 

tôi thay đổi nội dung của #container với một cuộc gọi ajax

$.get(url, function(data) { 
    ('#container').html(data); 
} 

Bây giờ tôi nhận được lỗi sau đây trong IE9: "SCRIPT5009: '_ đèn flash _removeCallback' là không xác định".

tôi đã cố gắng loại bỏ, xóa, ... video và/hoặc iframe trước khi cuộc gọi ajax nhưng điều đó không làm việc:

<script> 
    $('#video').html('') 
</script> 

<script> 
    $('#video').empty() 
</script> 

<script> 
    $('#video').remove() 
</script> 

<script> 
    $('#video iframe').attr('src', '') 
    $('#video').empty() 
</script> 

<script> 
    $('#video').hide() 
    $('#video iframe').attr('src', '') 
    $('#video').empty() 
</script> 

... 

Nhưng bây giờ tôi ra khỏi ý tưởng của ...

+0

im cũng chờ đợi giải pháp này rất xấu :( – coolguy

Trả lời

2

Cuối cùng tôi đã nhận được giải pháp.

Tôi không biết ngôn ngữ phía máy chủ nào bạn đang sử dụng, tôi đang sử dụng PHP. Dù sao thì nếu trình duyệt là IE9 thì hãy sử dụng thẻ đối tượng.

if (preg_match('/MSIE 9.0/', $_SERVER['HTTP_USER_AGENT'])) { /*for IE 9.0 generate with objace tag*/ ?> 
    <object type="application/x-shockwave-flash" data="VIDEO_URL"> 
     <param name="movie" value="VIDEO_URL" /> 
     </object> 
<?php } else { /*rest of all browsers,in iframe*/ ?> 
     <iframe src="VIDEO_URL"></iframe> 
<?php } ?> 

Sử dụng ngắn object thẻ cho IE9 và iframe để nghỉ ngơi.

1

Tôi đã nhận được giải pháp.

ytplayer.getIframe().src=''; 
+0

Để làm công việc này với các video Youtube hiển thị trong hộp thuốc vẽ, thêm dòng sau 'chức năng onCleanup' với các tùy chọn: '$ (element) .colorbox ({" onCleanup ": function() {$ (". cboxIframe "). attr (" src "," ");}});' – thirdender

1

Nếu bạn vẫn muốn tiếp tục sử dụng mã iframe, bạn có thể xóa iframe src bằng cách gọi removeAttr (thay vì cố gắng đặt trống).

$('#video iframe').removeAttr('src') 
0

Tôi đã nhận được lỗi tương tự và đến giải pháp của riêng mình. Tôi cảm thấy rằng việc sử dụng giải pháp "đối tượng" cũ cho IE9/IE10 không phải là giải pháp thực sự vì bạn không bao giờ phải mã hóa riêng cho một trình duyệt.

Sự khác biệt trong trường hợp của tôi, tôi chỉ cần một video để bật lên, sau đó ngừng phát và biến mất khi nút đóng được nhấp.

Sử dụng mã được cung cấp của bạn ...

function playVideo() { 
    $('#video iframe').attr('src', 'http://www.youtube.com/embed/VIDEO_ID_HERE'); 
    $('#video iframe').fadeIn(); 
} 

function stopVideo() { 
    $('#video iframe').attr('src', ''); 
    $('#video').fadeOut(); 
} 
Các vấn đề liên quan