websocket坐席,跨页面使用

博客讲述了在Chrome浏览器中由于安全策略限制,本地文件无法直接进行跨页面访问tlwsa对象的问题。作者通过将tlwsa对象放在主页面生成,并在子页面通过window.opener获取,解决了这一问题。在本地测试时遇到报错,但当使用http服务器运行时,问题得到解决。此方法对于处理多页面应用中WebSocket对象的共享具有参考价值。
摘要由CSDN通过智能技术生成

客户要求在弹出的子页面中调用tlwsa呼出。因为我们的demo只是为单页面的情形写的,所以不能直接用,要改造。

1 首先,唯一的tlwsa对象,不能放在TLWSADemo.js里生成了,要放在主页面webSocketAgent.html里面生成。

2 在新页面中(假设新页面是在webSocketAgent.html里用window.open打开的),通过 window.opener.tlwsa得到唯一的tlwsa对象。(这个其实就是在页面之间传递/共享对象/变量)
在子页面中,这样写:

<script src="TLWebSocketAgent.js"></script>
	<script>
		var authCode="tlwsab"; //验证码,必须与服务端配置的验证码相同,否则不能通过验证,无法登录到服务器
		//alert("asdf");
		//alert(window.opener.head);
		//window.opener.openAndlogin("81.70.154.77",100001,1,-1);
		var tlwsa=window.opener.tlwsa; //
	</script>
	<script src="TLWSADemo.js"></script>```

理论上这样就可以了,但是实际运行,报错,用F12调试页面,看到错误提示是:
blocked a frame with origin null from accessing
百度,得到的结果是:chrome的安全策略,本地文件不允许这样,但是在webserver上就没事。

安装python3.9,在网页目录下面启动一个httpserver:
python -m http.server
然后在浏览器地址栏输入:http://localhost:8000/webSocketAgent.html

测试OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值