当前位置: 首页 > 工具软件 > OpENer > 使用案例 >

跨域window.opener

郭均
2023-12-01

跨域

问题:在一个网站上想要接收其他网站发过来的消息

概念

跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。

http://www.nihao.com/index.html 调用 http://www.nihao.com/server.php (非跨域)

http://www.nihao.com/index.html 调用 http://www.nihaoma.com/server.php (主域名不同:nihao/nihaoma,跨域)

http://abc.nihao.com/index.html 调用 http://def.nihao.com/server.php (子域名不同:abc/def,跨域)

http://www.nihao.com:8080/index.html 调用 http://www.nihao.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.nihao.com/index.html 调用 https://www.nihao.com/server.php (协议不同:http/https,跨域)
localhost   调用 127.0.0.1 跨域

跨域:协议、域名、端口其中任意一个不同。
同源:协议、域名、端口均相同,

案列

b页面接受a页面发送过来的信息

//a.html a页面下的代码
var param = {
    act_name:"comfirmAddr",
    search_name: $("#search_input").val(),
    data:selAddList
}
var json = JSON.stringify(param);
console.log(json);
//第二个参数是目标域:http://www.nihao.com/a.html
window.opener.postMessage(json,'*');
window.close();
//b.html b页面下的代码 b页面接受a页面发送过来的信息
HTML:
<el-button onclick="goToB" >打开b.html的页面</el-button>
JavaScript:
function goToB(){
	 var  url = "http://www.ifine.com/b.html"
     window.open(url, "打开b.html的页面", "height=" + screen.height + ",width=" + screen.width + ",menubar=no,scrollbars=no,resizable=yes,toolbar=no,status=no,left=100,top=100") ;          
}
window.addEventListener('message', receieveMessage, false);
function receieveMessage(event)
{
    try
    {
        var param = event.data;
        var json = window.JSON.parse(param);
        var act_name = json.act_name;
        if(act_name == 'comfirmAddr')
        {
            vueObject.addrKey = json.search_name;
            var v_data = json.data;
            vueObject.addresArr = v_data;
        }
    }
    catch(e)
    {
        alert("异常名字:"+e.name);
        alert("异常号:"+e.number);
        alert("异常的描述信息:"+e.description);
        alert("异常的错误信息:"+e.message);
    }
}

事件监听

window.addEventListener(type, function, true/false);
type:事件的类型(如“click”或“mousedown”或“message”或“resize”)。
function:事件触发后调用的函数。
true/false:true:先捕获 、false:先冒泡

移除监听事件

window.removeEventListener(“click”, function);

 类似资料: