带有target="_blank"的表单返回的PDF在主屏幕web应用中不起作用是因为target="_blank"属性会在新的浏览器标签或窗口中打开链接,而主屏幕web应用通常是一个单页应用,无法打开新的标签或窗口。
解决这个问题的方法是使用其他方式来打开PDF文件,例如使用JavaScript来处理表单提交,并在同一页面中加载PDF文件。以下是一个示例代码:
<!DOCTYPE html>
<html>
<head>
<title>表单提交</title>
<script src="https://cdn.jsdelivr.net/npm/pdfobject"></script>
</head>
<body>
<form id="pdfForm" action="your_pdf_generation_endpoint" method="POST">
<!-- 表单内容 -->
<input type="submit" value="生成PDF">
</form>
<div id="pdfContainer"></div>
<script>
document.getElementById("pdfForm").addEventListener("submit", function(event) {
event.preventDefault(); // 阻止表单默认提交行为
// 使用Ajax或其他方式将表单数据发送到服务器生成PDF文件
// 在成功返回后,使用PDFObject库将PDF文件加载到指定的容器中
// 以下是一个示例代码,具体实现需要根据实际情况进行调整
var xhr = new XMLHttpRequest();
xhr.open("POST", "your_pdf_generation_endpoint", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var pdfUrl = JSON.parse(xhr.responseText).pdfUrl;
PDFObject.embed(pdfUrl, "#pdfContainer");
}
};
xhr.send(JSON.stringify({ formData: "your_form_data" }));
});
</script>
</body>
</html>
在上述示例代码中,我们使用了PDFObject库来加载PDF文件,并将其嵌入到id为"pdfContainer"的容器中。你需要将"your_pdf_generation_endpoint"替换为实际的生成PDF文件的服务器端接口地址,并根据实际情况调整表单数据的处理逻辑。
这种方式可以在主屏幕web应用中实现在同一页面中加载PDF文件,避免了target="_blank"属性的限制。
领取专属 10元无门槛券
手把手带您无忧上云