gpt4 book ai didi

javascript - iframe onload 在 url 生成 pdf 输出时不起作用

转载 作者:太空狗 更新时间:2023-10-29 16:45:35 26 4
gpt4 key购买 nike

我有一个生成 PDF 文件的 URL。为了生成 PDF,我使用 iframe 加载该 url 并在同一页面中为用户生成 PDF 文件。

当用户点击按钮时,它会在屏幕上显示loader。它应该在 iframe 加载完成时隐藏(当 PDF 下载弹出窗口时)。我使用了下面的代码,但它不起作用,loader 在下载弹出窗口打开后仍然显示(如果我将 url 更改为任何其他网址,例如 google.com,那么它将起作用)。

这是我的代码片段。

$("#test").click(function(){
iframe = document.getElementById("download-container1");
if (iframe === null)
{
$("#ajax_loading").show();
var url="http://test.coachfxlive.com/ajax/ajax-action.php?type=s&vid=0&playlist_id=11&perpage=1&action=get_profile";
iframe = document.createElement('iframe');
iframe.id = "download-container1";
document.body.appendChild(iframe);

$('#download-container1').load(function () {
$("#ajax_loading").hide();
});
iframe.src=url;
}

});
.ajax_loading {
background-color: rgba(0, 0, 0, 0.7);
display: none;
height: 100%;
left: 0;
position: fixed;
top: 0;
width: 100%;
z-index: 99999;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<div class="ajax_loading" id="ajax_loading"><span>Please Wait... Loading</span></div>
<button id="test">click</button>
</body>
</html>

iframe加载完成后,需要隐藏div ajax_loading。我在这里做错了什么吗?还有其他解决办法吗?

提前致谢。

最佳答案

您可以使用 readystate iframe 属性来检查 iframe 是否已完全加载。但是,如果内容是二进制文件,这在 Chrome 中不起作用。

设置 iframe url 后,它会每秒检查 iframe 就绪状态属性:

$("#test").click(function(){
iframe = document.getElementById("download-container1");
if (iframe === null)
{
$("#ajax_loading").show();
var url="http://test.coachfxlive.com/ajax/ajax-action.php?type=s&vid=0&playlist_id=11&perpage=1&action=get_profile";
iframe = document.createElement('iframe');
iframe.id = "download-container1";
document.body.appendChild(iframe);

//$('#download-container1').load(function () {
// $("#ajax_loading").hide();
//});
iframe.src=url;
checkFinishedDownload(iframe);
}

});

function checkFinishedDownload(ifr) {
if (ifr.readyState == "complete" || ifr.readyState == "interactive") {
// Here hide the spinner
$("#ajax_loading").hide();
}
else {
setTimeout(function () {
checkFinishedDownload(ifr);
}, 1000);
}
}
}

检查我的问题:Iframe.readyState does not work in chrome

编辑:在 Firefox 中,您可以使用 onload 事件:

function checkFinishedDownload(ifr) {
if ($.browser.mozilla) {
ifr.onload = function () {
$("#ajax_loading").hide();
}

}else{
iframeCheck(ifr);
}
}

function iframeCheck(iframe){
if (iframe.readyState == "complete" || iframe.readyState == "interactive") {
// Here hide the spinner
$("#ajax_loading").hide();
}
else {
setTimeout(function () {
checkFinishedDownload(iframe);
}, 1000);
}
}

关于javascript - iframe onload 在 url 生成 pdf 输出时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com