相关疑难解决方法(0)

在Chrome中加载iframe时,"加载"事件未触发

我试图在我的客户端上显示"掩码",而文件是动态生成的服务器端.似乎推荐解决此问题(因为它不是ajax)是使用iframe并从onload或done事件中侦听以确定文件何时实际从服务器传送到客户端.

这是我的角度代码:

    var url = // url to my api
    var e = angular.element("<iframe style='display:none' src=" + url + "></iframe>");
    e.load(function() {
        $scope.$apply(function() {
            $scope.exporting = false;  // this will remove the mask/spinner
        });
    });
    angular.element('body').append(e);
Run Code Online (Sandbox Code Playgroud)

这在Firefox中运行良好但在Chrome中没有运气.我也试过使用onload函数:

e.onload = function()  { //unmask here }
Run Code Online (Sandbox Code Playgroud)

但我也没有运气.

想法?

javascript iframe google-chrome angularjs

29
推荐指数
2
解决办法
5万
查看次数

使用jquery ajax下载二进制文件

我试图使用jquery ajax下载二进制音频文件.

通常我会发出这样的命令:

 windows.location.href = 'http://marksdomain(dot)com/audioFile.wav' ;
Run Code Online (Sandbox Code Playgroud)

但是,最近我们的服务器等待响应的时间太长了,我得到一个讨厌的网关超时消息.

有人建议我使用jquery-ajax,这是有道理的,因为那时我会更多地控制超时.

这是我到目前为止玩过的代码:

$.ajax({
    url: 'http://marksdomain(dot)com/audioFile.wav',
    timeout: 999999,
    dataType: 'binary',
    processData: false, // this one does not seem to do anything ?

    success: function (result) {
        console.log(result.length);
    },
    error: function (result, errStatus, errorMessage) {
        console.log(errStatus + ' -- ' + errorMessage);
    }
};
Run Code Online (Sandbox Code Playgroud)

当我省略"dataType"时,二进制文件的大小比服务器上实际大三倍.但是,当我使dataType等于"binary"时,ajax会抛出一个错误:

"No conversion from text to binary"
Run Code Online (Sandbox Code Playgroud)

从一些早期的帖子中,听起来好像jquery-ajax无法以这种方式处理二进制文件.

我确实发现了Delivery.js,它实际上对我正在尝试的东西非常有效,但我宁愿不使用节点解决方案.

有什么建议?

javascript ajax jquery

23
推荐指数
3
解决办法
2万
查看次数

标签 统计

javascript ×2

ajax ×1

angularjs ×1

google-chrome ×1

iframe ×1

jquery ×1