我试图在我的客户端上显示"掩码",而文件是动态生成的服务器端.似乎推荐解决此问题(因为它不是ajax)是使用iframe并从onload或done事件中侦听以确定文件何时实际从服务器传送到客户端.
这是我的角度代码:
var url = // url to my api var e = angular.element(""); e.load(function() { $scope.$apply(function() { $scope.exporting = false; // this will remove the mask/spinner }); }); angular.element('body').append(e);
这在Firefox中运行良好但在Chrome中没有运气.我也试过使用onload函数:
e.onload = function() { //unmask here }
但我也没有运气.
想法?
很遗憾,onload
如果内容是附件,则无法在Chrome中使用iframe 事件.这个答案可能会让您了解如何解决它.
我讨厌这个,但除了每隔一段时间检查一次之外,除了检查它是否仍在加载之外,我找不到任何其他方法.
var timer = setInterval(function () { iframe = document.getElementById('iframedownload'); var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; // Check if loading is complete if (iframeDoc.readyState == 'complete' || iframeDoc.readyState == 'interactive') { loadingOff(); clearInterval(timer); return; } }, 4000);