簡體   English   中英

如何將后請求的響應放入新窗口/選項卡

[英]How to put the response of a post-request into a new window/tab

我有這個關於如何使用 POST 並將服務器生成的 html 放入新的 window 的工作示例:

const response = await this.axiosInstance.post(url, postData)
const htmlResponse = response.data
const newWindow = window.open()
newWindow.document.write(htmlResponse)

但是我不確定這是否是最好的甚至是正確的方法。 我看到了一些警告。 我在最后一行收到警告說newWindow可能是' null '。 如果切換到 TypeScript 我也不確定htmlResponse的類型。 我會假設Document ,但 write() 只支持string ,所以它可能是正確的分類。

有沒有更好的方法將后請求的內容放入新的 window 中?

更新:內容類型為text/html 類型; charset=UTF-8 ,不確定它是否會改變任何東西。

您所擁有的可能足以滿足您的用例。 有人可能會建議在操作 DOM 之前等待某種形式的就緒事件。

const newWindow = window.open();
newWindow.onload = (event, f, g, h) => newWindow.document.write('Do great things.');

更好的解決方案可能是從服務器獲取實際數據而不是 HTML 字符串,創建模板頁面來接收數據,並呈現格式良好的頁面。

Window.postMessage() API可用於在父子 windows 之間發送數據。 如果您需要規避Same-origin policy ,這將特別有用。

我做了幾個假設,這個建議可能不適用於您的用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM