检测是否在子窗口中进行了单击

时间:2015-06-30 20:27:37

标签: javascript jquery html html5

我正在使用window.open在javascript中打开一个新窗口,我想检测子窗口中的点击次数。假设如果在子窗口中进行了单击,我想在父窗口中进行一些更改。我已经存储了像var child = window.open()这样的子窗口的句柄。我的父窗口中有一些代码child.onclick = function(),但它似乎无法正常工作。

3 个答案:

答案 0 :(得分:1)

我会从子窗口执行代码,如下所示:

// use underscore for _.map() since its great to have underscore anyway
// or use JS map if you prefer...

var _ = require('underscore');

function changesOn(object, klass) {
    var query = new Parse.Query(klass);
    return query.get(object.id).then(function(savedObject) {
        return _.map(object.dirtyKeys(), function(key) {
            return { oldValue: savedObject.get(key), newValue: object.get(key) }
        });
    });
}

// my mre beforeSave looks like this
Parse.Cloud.beforeSave("Dummy", function(request, response) {
    var object = request.object;
    var changedAttributes = object.changedAttributes();
    console.log("changed attributes = " + JSON.stringify(changedAttributes));  // null indeed!

    changesOn(object, "Dummy").then(function(changes) {
        console.log("DIY changed attributes = " + JSON.stringify(changes));
        response.success();
    }, function(error) {
        response.error(error);
    });
});

答案 1 :(得分:1)

您可以尝试这样的事情:

var window = new Window();
var child = window.open();

var childFlag = false;
var onclick = new function() {
    alert ('hello');
    flag = true;
}

child.addEventListener('click', onclick);

var parentClick = function() {
    if(childFlag) {
        // Do something...
    }
}

您可以正常创建父窗口和子窗口。然后,当子窗口中发生单击时,您将标记父级也有权访问的标志,以指示发生了单击。然后根据它在父窗口中执行某些操作。

答案 2 :(得分:1)

@ kcollins02有一个很好的答案。如果沟通是从孩子到父母的单向。如果通信必须双向进行,我建议使用本文所述的jquery事件:http://www.manasinc.com/communicating-between-two-browser-windows-using-jquery-and-custom-events/