javascript(js) 網頁(Html)之間 傳值
javascript(js) 網頁(Html)之間 傳值
資料來源: ChatGPT3.5
https://juejin.cn/post/6956215013858082852
01.URL (get 傳值)方案
// 發送端網頁 var dataToSend = "Hello"; window.location.href = "receiver.html?data=" + encodeURIComponent(dataToSend);
// 接收端網頁 var receivedData = decodeURIComponent(window.location.search.replace("?data=", "")); console.log(receivedData); // 輸出: Hello
<input type="text" id="txt"> </br> <input type="button" value="TEST" onclick="test()"/> <SCRIPT LANGUAGE="JavaScript"> function test(){ var s =document.getElementById("txt"); location.href="2.html?"+"txt="+encodeURI(s.value); } </SCRIPT> //===================// <script language="javascript" type="text/javascript"> var loc=location.href; var n1=loc.length;//地址的总长度 var n2=loc.indexOf("=");//取得=号的位置 var id=decodeURI(loc.substr(n2+1, n1-n2));//从=号后面的内容 alert(id);// document.write(id) </script>
02.Cookies 方案
// 發送端網頁 document.cookie = "data=Hello"; // 接收端網頁 var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); if (cookie.startsWith("data=")) { var receivedData = cookie.substring("data=".length, cookie.length); console.log(receivedData); // 輸出: Hello } }
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>无标题文档</title> <style> div{ height: 36px; line-height: 36px; border: #eee solid 1px; margin: 10px;} </style> <script> //添加 cookie function cp_add_cookie(num){ setCookie("cp_keynum",num,2); } //查找 function cp_seek_cookie(){ var cp_keynum=getCookie("cp_keynum"); var find_result = document.getElementById("find_result2"); find_result.innerHTML = "cp_keynum == " + cp_keynum; } //设置 cookie 值的函数,创建一个函数用于存储访问者的名字 //cname:名称,必须字母 //cvalue:值 //exdays:过期时间(天) function setCookie(cname,cvalue,exdays){ var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname+"="+cvalue+"; "+expires; } //获取 cookie 值的函数,创建一个函数用户返回指定 cookie 的值 //cname:名称,你之前设置的名称 function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) return c.substring(name.length,c.length); } return ""; } </script> </head> <body> <h1>利用JavaScript Cookie存储 </h1> <div onclick="cp_add_cookie(1)">添加1</div> <div onclick="cp_add_cookie(2)">添加2</div> <div onclick="cp_add_cookie(3)">添加3</div> <div onclick="cp_seek_cookie()">查找</div> <div id="find_result2"></div> </body> //=================// <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>接受数据</title> <style> div{ height: 36px; line-height: 36px; border: #eee solid 1px; margin: 10px;} </style> <script> //查找 cookie function cp_seek_cookie(){ var cp_keynum=getCookie("cp_keynum"); var find_result = document.getElementById("find_result2"); find_result.innerHTML = "cp_keynum == " + cp_keynum; } //获取 cookie 值的函数,创建一个函数用户返回指定 cookie 的值 //cname:名称,你之前设置的名称 function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) return c.substring(name.length,c.length); } return ""; } </script> </head> <body> <h1>利用JavaScript Cookie存储 </h1> <div onclick="cp_seek_cookie()">查找JavaScript Cookie存储的值</div> <div id="find_result2"></div> </body>
03.LocalStorage 或 SessionStorage 方案
// 發送端網頁 localStorage.setItem("data", "Hello"); // 接收端網頁 var receivedData = localStorage.getItem("data"); console.log(receivedData); // 輸出: Hello
<h1>利用HTML5 Web 存储 localStorage</h1> <div onclick="save(1)">添加1</div> <div onclick="save(2)">添加2</div> <div onclick="save(3)">添加3</div> <div onclick="save(4)">添加4</div> <div onclick="save(5)">添加5</div> <div onclick="find()">查找</div> <div id="find_result"></div> <script> if(typeof(Storage)=="undefined") { document.getElementById("result").innerHTML="对不起,您的浏览器不支持 web 存储。"; } //保存数据 function save(cp_value){ var num = new Object; num.cp_keynum ="key_num"; num.cp_num_value = cp_value; var str = JSON.stringify(num); // 将对象转换为字符串 localStorage.setItem(num.cp_keynum,str); alert("添加成功"); } //查找数据 function find(){ var cp_keynum = "key_num"; var str = localStorage.getItem(cp_keynum); var find_result = document.getElementById("find_result"); var num = JSON.parse(str); find_result.innerHTML = cp_keynum + "==" + num.cp_num_value; } </script> //=======================// <h1>利用HTML5 Web 存储 localStorage</h1> <div onclick="find()">查找</div> <div id="find_result"></div> <script> if(typeof(Storage)=="undefined") { document.getElementById("result").innerHTML="对不起,您的浏览器不支持 web 存储。"; } //查找数据 function find(){ var cp_keynum = "key_num"; var str = localStorage.getItem(cp_keynum); var find_result = document.getElementById("find_result"); var num = JSON.parse(str); find_result.innerHTML = cp_keynum + "==" + num.cp_num_value; } </script>
04.PostMessage API[如果你的網頁是嵌套在另一個窗口或 iframe 中,你可以使用 PostMessage API 進行跨窗口通信] 方案
// 發送端網頁 var dataToSend = "Hello"; window.parent.postMessage(dataToSend, "https://receiverdomain.com"); // 接收端網頁 window.addEventListener("message", function(event) { if (event.origin === "https://senderdomain.com") { var receivedData = event.data; console.log(receivedData); // 輸出: Hello } });