window.open跨页面传输

如果使用过移动端编写过混合app,一定会知道一些跨页面传输的方式,

但他们是怎么实现的,其实,原理一般是页面一定是先前就加载的,这样

你才可以实现跨页面传输,不是页面都不存在,连个方向都没有,怎么传输。

但今天这个不是一个实现移动端的,只是仿仿它,让人更加知道这个原理而已。

主要昨天看同事看一个慕课网时弹框登录居然是个新窗口,就好奇了,这个窗口和

窗口怎么实现传输的?

然后就欧了。window.open

window.open会返回一个被打开页面的对象

opener是被打开页面会有个opener对象指向打开的页面对象

传送门:菜鸟教程

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1.html</title>
</head>
<body>
<h1>我是页面1</h1>
    <button id="btn1">click</button>
    <script>
    var oBtn=document.querySelector("#btn1");
    var openWin;
    oBtn.onclick=function(){
        openWin=window.open("./2.html","newwindow","width=500,height=500");
        //当新窗口页面渲染加载完了,才会有你要获取它的页面的方法
        openWin.onload=function(){
                openWin.abc();
            }
    }
    function html1(){
        oBtn.style.background="#444";
    }
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2.html</title>
</head>
<body>
<h1>我是页面2</h1>
    <button id="btn1">click</button>
    <script>
    var oBtn=document.querySelector("#btn1");
    function abc(){
        document.body.style.background="red";
        opener.html1();
    }
    oBtn.onclick=function(){
        opener.html1();
    }
    </script>
</body>
</html>

 

转载于:https://www.cnblogs.com/zhangzhicheng/p/6637039.html

window.open域拦截是指在前端开发中,当使用window.open方法打开一个域的URL时,浏览器会默认进行拦截,以保护用户隐私和安全。这是因为域访问可能导致一些潜在的安全问题,如恶意脚本注入、数据泄露等。 浏览器拦截域打开URL的方式是通过Same-Origin Policy(同源策略)来实现的。同源策略要求打开的URL与当前页面具有相同的协议、域名和端口,否则就被认为是域访问。 如果要在前端中突破域限制打开一个域的URL,可以考虑以下几种方法: 1. 使用代理:通过在自己的后端服务器上设置代理接口,将域请求发送到目标URL,在后端进行请求并返回结果给前端。这样前端实际请求的是同源的接口,避免了域问题。 2. 文档通信(PostMessage):可以使用window.postMessage方法在不同窗口(甚至域)之间进行通信。通过在目标窗口中监听message事件,接收并处理消息,可以实现域通信和数据传递。 3. 使用CORS(域资源共享):如果目标URL的服务器支持CORS,可以在响应头中添加Access-Control-Allow-Origin字段,允许指定域名或通配符来接受域请求。 4. JSONP:如果目标URL的服务器支持JSONP(JSON with Padding),可以通过动态创建script标签,指定src为目标URL,并在URL中传递一个回调函数的名称。服务器返回的响应数据会作为回调函数的参数传入,从而实现域请求和数据获取。 5. WebSocket:WebSocket协议可以在不受同源策略限制的情况下进行域通信,可以使用WebSocket API进行域数据传输和实时通信。 这些方法可以根据具体需求选择使用,具体选择哪种方式要根据项目的需求和安全考虑来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值