0

目标

发送truefalse当窗口关闭时。

问题

当我单击一个按钮时,会打开一个带有window.open();语法的窗口。我需要的似乎很简单:当窗口关闭时,返回打开弹出窗口的窗口来自服务器的响应,这可以是truefalse- 就像 Facebook 的 API 一样。

有人知道我怎样才能以简单的方式做到这一点?

聚光灯

我不想使用 jQuery,因为页面的 CSS 覆盖了弹出窗口的 CSS。

当前语法

HTML:

[...]
<a href="#" class="share" data-networkName="<?php echo $network->name; ?>">
    Share</a>
[...]

JS:

$(".share").on("click", function(event) {
    event.preventDefault();

    var networkName = $(this).data("networkName");

    window.open("share.php?network=" + networkName");
});
4

2 回答 2

7

这就是我想出的:

更新

接收.html

<a href="#" onclick="openWindow()">Share</a>

<script>
  var new_window = null;

  function openWindow() {
    new_window = window.open('return.html');
  }

  // Callback Function that we will call in child window
  function sendMessage(message) {
    alert(message);
    new_window.close();
  }
</script>

返回.html

<a href="#" onclick="window.messageParent();">Mark As Shared</a>

<script>
  function messageParent() {
    // Calls sendMessage function on the parent window.
    window.opener.sendMessage("Hello World!"); 
  }
</script>

然后,您可以在父窗口的 sendMessage 函数中处理您想要的返回值。

这是我能想到的最简单的方法。请让我知道这是否有效。

于 2013-10-01T00:02:54.500 回答
1

尝试这个:

$(".share").on("click", function(event) {
    event.preventDefault();

    var networkName = $(this).data("networkName");
    window.onbeforeunload = function() {
        window.open("share.php?network=" + networkName");
    }
});

更新

main.php 的脚本:

$(".share").on("click", function(event) {
        event.preventDefault();

        var networkName = $(this).data("networkName");
        window.onbeforeunload = function() {
            window.open("share.php?network=" + networkName");
        }
    function send(msg) {
        //send msg to db or store as cookies
    }
    });

popup.html 的脚本:[假设您有一个名为“#popup-btn”的共享按钮]

$('#popup-btn').click(function() {
    window.opener.send('MSG SENT FROM POPUP {THEY SHARED SOMETHING}');
});
于 2013-10-01T00:58:19.287 回答