執行downFile方法 像是沒指向iframe 還是 判斷iframe加載完成的事件有錯?
<form id="formDownload" target="downloadTarget" style="display:none;">
<div class="form-params">
<input type="hidden" name="param" value="" />
</div>
</form>
<iframe id="downloadTarget" name="downloadTarget" style="display:none;"></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();
}
}
}
轉自:https://segmentfault.com/q/1010000009163994
注意:
var oFrm = $('#downloadTarget')[0];在IE11中可能不兼容,須用以下兩種方法取得
- //獲取iframe的document對象
- //方法1
- var iframe = document.getElementById('iframe1').contentWindow.document;
-
- //方法2
- function getIframeDom(iframeId) {
- return document.getElementById(iframeId).contentDocument || window.frames[iframeId].document;
- }