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