簡體   English   中英

如何在父頁面 js 和子彈出 js 之間傳遞值?

[英]How can I pass values between parent page js and child popup js?

我的父頁面js文件腳本:

 var PopupConnect = window.open("http://localhost:8080"); var popup_function = PopupConnect.CreateText();

我的彈出頁面js文件腳本:

 function CreateText() { var text = "random text"; return json({ result: text }) }

父頁面中的這條 js 行運行良好,會在瀏覽器中觸發一個新選項卡:

PopupConnect = window.open

我得到的錯誤在它后面的一行中:

Uncaught TypeError: PopupConnect.CreateText is not a function

如何從父頁面js正確調用子頁面中的js函數? 這甚至可能嗎? 以及如何將 CreateText 函數的結果傳遞回父頁面 js?

注意:父頁面在 Python 服務器上運行,子彈出頁面在 Node.js 服務器上運行。 當然,這兩個頁面都是在同一個瀏覽器中打開的。

有些人可能會建議使用 localStorage.setItem 和 localStorage.getItem 方法,但這兩個頁面在不同的本地主機端口上運行,當然在生產中它們將在不同的域上運行。 僅供參考,我已經嘗試過這種方法,但沒有奏效。

更新:

**我最終在父頁面中使用了window.postMessage並將addEventListener放在子彈出窗口中,因此一旦收到消息,它就會運行 js 函數。 現在我面臨的問題時間問題

如何在調用window.open之后插入延遲,以便子頁面有時間在父頁面運行 window.postMessage 之前完全加載? 我知道有一種叫做“等待”的東西,但我認為這是因為 JS 被用作后端而不是前端? 解決這個時間問題的最佳方法是什么?**

您可以嘗試使用Window.postMessage 希望能幫到你

在父頁面和子頁面中創建事件監聽器。

發送:父頁面發送-----消息---->到子頁面(事件監聽器) 回復:子頁面發送-----消息---->到父頁面(事件監聽器)

更新:關於timming新頁面加載:您可以在准備好后從新頁面發送消息到父頁面

暫無
暫無

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

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