js跨域window.opener
js跨域
概念
跨域,是指瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對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 跨域
跨域:協議、域名、埠其中任意一個不同。
同源:協議、域名、埠均相同,
案列
//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);
相關文章
- js -- 跨域問題JS跨域
- js跨域資源共享JS跨域
- JS_0081:雜記:window.openerJS
- js跨域解決方案(一)JS跨域
- JS中的跨域問題JS跨域
- 搞懂:前端跨域問題JS解決跨域問題VUE代理解決跨域問題原理前端跨域JSVue
- 跨域庫herryPostMessage.js的一些優化,多iframe跨域跨域JS優化
- 跨域問題(普通跨域和springsecurity跨域)跨域SpringGse
- window.opener
- 解決JS跨域訪問的問題JS跨域
- vue.config.js 中跨域 proxy 的原理VueJS跨域
- 前端面試總結之:js跨域問題前端面試JS跨域
- 元芳 ,Js 跨域之李代桃僵,你還看嗎?JS跨域
- 跨域跨域
- Tomcat跨域Tomcat跨域
- 跨域CORS跨域CORS
- 前端跨域前端跨域
- nuxt跨域UX跨域
- [SpringBoot] 跨域Spring Boot跨域
- HTTP跨域HTTP跨域
- Vue跨域Vue跨域
- django 跨域Django跨域
- CORS跨域CORS跨域
- 跨域共享CORS詳解及Gin配置跨域跨域CORS
- 【JS基礎】DOM,BOM,事件繫結,ajax,跨域,儲存JS事件跨域
- 靜態網頁使用Node.js跨域代理服務網頁Node.js跨域
- 使用 core.js 解決 GraphQL Mock Server 跨域問題JSMockServer跨域
- Vue 跨域問題解決辦法 Vue 配置防止跨域 nginx 重定向防止跨域Vue跨域Nginx
- 深入跨域問題(3) – 利用 JSONP 解決跨域跨域JSON
- 深入跨域問題(3) - 利用 JSONP 解決跨域跨域JSON
- 深入跨域問題(4) - 利用代理解決跨域跨域
- 深入跨域問題(2) - 利用 CORS 解決跨域跨域CORS
- Nginx解決前端跨域問題 CORS跨域配置Nginx前端跨域CORS
- 深入跨域問題(4) – 利用代理解決跨域跨域
- 跨域請求跨域
- JSON形式跨域JSON跨域
- 跨域總結跨域
- 跨域 Cors error跨域CORSError