提示类型“HTMLIFrameElement”上不存在属性“onreadystatechange”。ts(2339)

想要在模拟表单下载文件的时候监听下载完成进度。
搜到方法是将文件下载指向一个iframe,示例代码如下

function downFile(url, method, params) {
    var form = $("#formDownload");
    form.empty();
    form.attr("method", method);
    form.attr("action", url);
    for ( var i in params) {
        var param=params[i];
        var input = $("<input>");
        input.attr("type", "hidden");
        input.attr("name", param.name);
        input.attr("value", param.value);
        form.append(input);
    }
    form.submit();
    var oFrm = $('#downloadTarget')[0];
    oFrm.onload = oFrm.onreadystatechange = function() {
        console.log("wancheng");
         if (this.readyState && this.readyState != 'complete') return;
         else {
             onComplete();
         }
    }
}

然而在Typescript中使用时,会显示HTMLElement上不存在属性onreadystatechang,查阅资料说需要给oFrm限定类型,改成HTMLIFrameElement即可。但是改完后却提示HTMLIFrameElement上不存在属性onreadystatechange。请问该如何修改呢?

阅读 8.3k
2 个回答

试一下这样

    oFrm.onload = oFrm["onreadystatechange"] = function() {
        console.log("wancheng");
         if (this.readyState && this.readyState != 'complete') return;
         else {
             onComplete();
         }
    }
 var oFrm = <HTMLIFrameElement>document.getElementById('id');
        oFrm.onload = oFrm.onratechange = function() {
            console.log("wancheng");
             if (this.readyState && this.readyState != 'complete') return;
             else {
                 onComplete();
             }
        }

typescript 相关: 断言 <> as

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题