簡體   English   中英

在另一個窗口中收聽事件

[英]Listen to event in another window

我使用var openedWindow = window.open(...)創建了一個窗口。 我有一個應該在新窗口中監聽click事件的按鈕的函數,但它永遠不會觸發。

每當我單擊btSearch按鈕時,它都應打開另一個窗口並監聽#submitButton click事件。

 btSearch.Attributes["onclick"] = $@"
                                     var openedWindow = window.open(myUrl, "", "toolbar=no,menubar=no,personalbar=no,width=650,height=399,scrollbars=yes,resizable=yes");
                                     window.onModalExit(openedWindow);";

功能是aspx文件

function onModalExit(modalWindow) {
    $('#submitButton', modalWindow.document).ready(function () {
        modalWindow.document.getElementById('submitButton').addEventListener('click', function () {
           console.log('RETURNED CORRECTLY');
           alert('Now');
        });
    });
}

瀏覽器中的每個窗口都是“隔離的”,也就是說,您無法以編程方式影響另一個窗口。

只有管​​理所有這些選項卡的瀏覽器才能完成此操作。 或者,也許是通過為瀏覽器安裝的擴展程序,我懷疑那些程序有能力在正在運行的頁面中注入內容

編輯:

現在,由於我無法直接以任何方式完成此操作,因此您可以:

  • 在要從中讀取值的選項卡上創建輪詢機制
  • 將值存儲在某種服務器(數據庫,后端內存等)中
  • 找到一種方法來關聯某種ID,以便您知道要查找的內容。

因此,您將需要花很長的時間在PageA-> BackEnd-> PageB周圍轉移值。

我非常自以為是地說,僅憑普通頁面就無法影響/讀取其他選項卡。 在用戶同意通過安裝擴展程序授予權限之后,您需要更高層的東西,例如瀏覽器本身,或具有注入/檢查頁面功能的擴展程序。

我認為可以解決您的需求的唯一解決方案是使用套接字

但是為此,您顯然需要某種后端。

您可以通過window.opener.postMessage()函數從打開的窗口向打開的窗口發送數據。

暫無
暫無

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

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