首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带有target="_blank“的表单返回的PDF在主屏幕web应用中不起作用

带有target="_blank"的表单返回的PDF在主屏幕web应用中不起作用是因为target="_blank"属性会在新的浏览器标签或窗口中打开链接,而主屏幕web应用通常是一个单页应用,无法打开新的标签或窗口。

解决这个问题的方法是使用其他方式来打开PDF文件,例如使用JavaScript来处理表单提交,并在同一页面中加载PDF文件。以下是一个示例代码:

代码语言:txt
复制
<!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"属性的限制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券