在另一个窗口收听活动

时间:2018-01-25 08:26:01

标签: javascript c# jquery webforms

我使用var openedWindow = window.open(...)创建了一个窗口。 我有一个函数应该在新窗口中听一个按钮click事件,但它永远不会触发。

每当我点击btSearch按钮时,它都会打开另一个窗口并听取#submitButton点击事件。

 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');
        });
    });
}

3 个答案:

答案 0 :(得分:0)

broswer中的每个窗口都是“孤立的”,即您无法以编程方式影响其他窗口。

只能由管理所有这些标签的浏览器来完成。或者也许是通过已安装的浏览器扩展,我怀疑那些有能力在运行的页面中注入东西

编辑:

既然不能以我所知的任何方式直接完成,你可以:

  • 在要从
  • 中读取值的选项卡上创建轮询机制
  • 将值存储在某种服务器(数据库,后端的内存等)中
  • 找到一种关联某种ID的方法,以便您知道要查找的内容。

因此,您将通过在PageA - >周围花费很长时间来转移价值。 BackEnd - >网页B

我非常坦率地说,你不能仅通过普通页面来影响/阅读其他标签。在用户同意通过安装扩展程序授予权限后,您需要更高层的内容,例如浏览器本身,或者能够注入/检查页面的扩展。

答案 1 :(得分:0)

我认为解决您的要求的唯一解决方案是使用Sockets

但是为此,你显然需要某种后端。

答案 2 :(得分:0)

您可以通过window.opener.postMessage()函数将数据从打开的窗口发送到打开的窗口。