![](/img/trans.png)
[英]:focus pseudo selector style not being removed when a new tab is opened , even though blur event is fired
[英]Open new tab then listen for an event being fired
不,你不能。 好吧,不是直接的。
出于明显的安全原因,javascript只能从其自己的标签/窗口访问数据。 但是,您可以使用Cookie,locastorage或...从同一域中存储和读取数据。
您可以将EventListner添加到localstorage对象(在域之间共享)。 例如,Soundcloud就是这样做的。
编辑:我认为window.open和新选项卡之间存在混淆。
window.open打开一个弹出窗口。 然后,您可以从脚本中访问该弹出窗口。 但是请注意,弹出窗口的显示方式因浏览器而异。 有些人在新选项卡中打开它,有些人在新窗口中打开...。但是请注意,要访问弹出窗口,它必须具有相同的域,协议,端口等。
但是,如果用户手动打开新窗口/标签到您的站点,则此方法将不起作用,因为您没有对此的引用。
这似乎对我来说很好
在父窗口中
var form = window.open('/formsv2/add', '_blank', 'resizable=1', true);
form.addEventListener('formAdded', function(data) {
console.log('formAddedEvent');
console.log(data.name);
console.log(data.id);
$('#formIdSelect').append('<option value="'+data.id+'">'+data.name+'</option>').val(data.id);
});
在弹出窗口中
var evt = document.createEvent("Events")
evt.initEvent('formAdded', true, true); //true for can bubble, true for cancelable
evt.name = $('#title').val();
evt.id = data.form;
document.dispatchEvent(evt);
以下解决方案为我工作:
父窗口
var win = window;
win.open('url', 'newWindow', 'height=300,width=300');
win.addEventListener('message', function(response){
console.log(response.data);
},false);
子窗口
window.opener.postMessage('Success', "*");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.