2015-10-09 63 views
1

我試圖在用戶離開我的Ionic應用程序以便YouTube視頻停止播放時從DOM中刪除iframe。當應用程序轉到後臺時刪除DOM元素

我使用的pauseresume事件:

$ionicPlatform.on('resume', function() { 
    $rootScope.$broadcast('onResume'); 
}); 

$ionicPlatform.on('pause', function() { 
    $rootScope.$broadcast('onPause'); 
}); 

,當我離開應用程序和resume事件,當我再次打開它被觸發時,會觸發pause事件(我檢查的時間,以確保它們在resume上都沒有觸發),但是iframe沒有從DOM中刪除。

我用ng-if="showVideo"div包裝的iframe和$scope.showVideo = false;將其刪除:

$scope.$on('onPause', function() { 
    $scope.showVideo = false; 
    alert(Date.now()/1000); 
}); 

它完美,當我切換使用beforeLeave活動頁面:

$scope.$on('$ionicView.beforeLeave', function() { 
    $scope.showVideo = false; 
}); 

是否有某種限制什麼時候應用程序在後臺Ionic可以做什麼?當用戶離開應用程序時,還有其他方法可以停止視頻嗎?

+0

捕獲onblur事件來完成這項工作嗎? –

+0

@TheKNVB'pause'事件被觸發,但只執行一些操作('alert()'可用,但'$ scope.showVideo = false;'不會從DOM中刪除iframe) – Vilarix

回答

0

我解決它使用YouTube的iframe API:

$scope.$on('onPause', function() { 
    $('iframe').each(function() { 
    this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') 
    }); 
}); 

事實證明,當應用程序在後臺模式,但我們可以用iframe的溝通,我們不能修改DOM。

相關問題