window.open的相关认识

使用

window.open有4个可选参数:url,窗口name,窗口特征,是否替换历史记录。
当有name时,会寻找并在该标签页打开。name可用于a标签及表单的target
方法返回window对象,

var newWin = window.open(url,'newWin','width=200,height=200',false)

传参

1.get方法,拼接url,通过window.location.search 获取到 ?以后的部分。
2.post方法,通过提交表单将数据提交出去,然鹅js无法获取post请求()

	function openPostWindow(url, data, name){
	 var tempForm = document.createElement("form"); 
			tempForm.id="tempForm1";   
			tempForm.method = 'post';
			tempForm.action = url;
			tempForm.target = name;
			var hideInput = document.createElement('input');
			hideInput.name = 'content';
			hideInput.value = data;
			tempForm.appendChild(hideInput);
			// 本想监听submit事件,然而动态提交的事件是无法触发onsubmit。
			window.open('about:blank',name,false)
			document.body.appendChild(tempForm);
			tempForm.submit();
			
	}

用以上代码可以打开新页面并把数据发送到新页面,然鹅没什么用。
3. postMessage发送消息

var newWin = window.open(url,'newWin','width=200,height=200',false);
// newWin.onload = function(){} 发现不可行,提示跨域
newWin.postMessage('hello!',targetOrigin)
window.addEventListener('message', function (e) {
	console.log(e.data);
	window.opener.postMessage('hi!',targetOrigin)
}

但是在我的项目中出现了一个很奇怪的问题,newWin接收到msg后需要在body拼接一个iframe,可每次拼接完成,页面好像又重载了。最后延迟发送message才成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值