设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 63|回复: 13

详解前端在html页面之间传递参数的方法

[复制链接]

1

主题

69

回帖

161

积分

注册会员

积分
161
发表于 2024-4-20 10:30:33 | 显示全部楼层 |阅读模式
项目中经常会出现的一种情况,有一个列表,譬如是案例列表,点击列表中的某一项,跳转至详情页面。详情是根据所点击的某条记录生成的,因为案例和具体的详情页面,都是用户后期自行添加的,我们开始编写时,不可能穷尽。因此跳转页面时,我们需要传递一个参数过去,这样我们才能通过这个参数进行数据请求,然后根据后台返回的数据来生成页面。因此,通过a标签跳转的方式,肯定是行不通的。
我们经常写form表单,提交时,可以传递参数,如果使用表单,并将其隐藏起来,应该可以达到效果。
除此以外,window.location.href和window.open也可以达到效果。
1、通过form表单传递参数
  1. <html lang="en">
  2.     <head>
  3.     <!--网站编码格式,UTF-8 国际编码,GBK或 gb2312 中文编码-->
  4.         <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  5.         <meta name="Keywords" content="关键词一,关键词二">
  6.         <meta name="Description" content="网站描述内容">
  7.         <meta name="Author" content="Yvette Lau">
  8.         <title>Document</title>
  9.         <!--css js 文件的引入-->
  10.         <!-- <link rel="shortcut icon" href="images/favicon.ico">        -->
  11.         <link rel="stylesheet" href=""/>
  12.         <script type = "text/javascript" src = "jquery-1.11.2.min.js"></script>
  13.     </head>
  14.     <body>      
  15.         <form name = "frm" method = "get" action = "receive.html" onsubmit = "return foo()" style = "position:relative;">
  16.             <input type="hidden"  name="hid" value = "" index = "lemon">
  17.             <img class = "more" src = "main_jpg10.png" />
  18.             <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
  19.         </form>     
  20.         <form name = "frm" method = "get" action = "receive.html" onsubmit = "return foo()" style = "position:relative;">
  21.             <input type="hidden"  name="hid" value = "" index = "aaa">
  22.             <img class = "more" src = "main_jpg10.png" />
  23.             <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
  24.         </form>
  25.         <form name = "frm" method = "get" action = "receive.html" onsubmit = "return foo()" style = "position:relative;">
  26.             <input type="hidden"  name="hid" value = "" index = "bbb">
  27.             <img class = "more" src = "main_jpg10.png" />
  28.             <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
  29.         </form>
  30.     </body>
  31. </html>
  32. <script>
  33.     function foo(){
  34.         var frm = window.event.srcElement;
  35.         frm.hid.value = $(frm.hid).attr("index");
  36.         return true;
  37.     }
  38. </script>
复制代码
点击图片时,跳转至receive.html页面。页面的url变成:

我们想要传的字符串已经传递了过来。
然后再对当前的url进行字符串分割
  1. window.location.href.split(“=”)[1]//得到lemon
复制代码
我们拿到需要传来的参数之后,就可以根据这个进行下一步的处理了。
除了上述通过字符串分割来获取url传递的参数外,我们还可以通过正则匹配和window.location.search方法来获取。
2、通过window.location.href
譬如我们点击某个列表,需要传递一个字符串到detail.html页面,然后detail.html页面根据传来的值,通过ajax交互数据,加载页面的内容。
  1. var index = "lemon"; var url = "receive.html?index="+index; $("#more").click(function(){ window.location.href = url; });
复制代码
当前页面会被替换成recieve.html的页面,页面的url变为:

然后我们再用上面的方法提取自己需要的参数
3、通过window.location.open
如果是希望打开一个新页面,而不是改变当前的页面,那么window.location.href就不适用了,此时,我们需要借助于window.location.open()来实现
简单介绍有一下window.open()函数,window.open()有三个参数,第一个参数是要打开的页面的url,第二个参数是窗口目标,第三个参数是一个特定字符串以及一个表示新页面是否取代浏览器历史集中当前加载页面的布尔值,通过只需要传递第一个参数。第二个参数还可以是”_blank”,”_self”,”_parent”,”_top”这样的特殊窗口名称,”_blank”打开新窗口,”_self”实现的效果同window.location.href.
继续上面的例子:
  1. <script>
  2.     var index = "lemon";
  3.     var url = "receive.html?index="+index;
  4.     $("#more").click(function(){
  5.         window.open(url)
  6.     });
  7. </script>
复制代码
这样在点击的时候,就会打开一个新页面,页面的url地址与上面相同。
由于浏览器的安全限制,有些浏览器在弹出窗口配置方面增加限制,大多数浏览器都内置有弹出窗口的屏蔽程序,因此,弹出窗口有可能被屏蔽,在弹出窗口被屏蔽时,需要考虑两种可能性,一种是浏览器内置的屏蔽程序阻止弹出窗口,那么 window.open()很可能返回Null,此时,只要监测这个返回的值就可以确定弹出窗口是否被屏蔽。
  1. var newWin = window.open(url);
  2. if(newWin == null){
  3.     alert("弹窗被阻止");
  4. }
复制代码
另一种是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误,因此,要像准确的检测弹出窗口是否被屏蔽,必须在检测返回值的同时,将window.open()封装在try-catch块中,上面的例子中可以写成如下形式:
  1. <script>
  2.     var blocked = false;
  3.     try{
  4.         var index = "lemon";
  5.         var url = "receive.html?index="+index;
  6.         $("#more").click(function(){
  7.            var newWin = window.open(url);
  8.            if(newWin == null){
  9.                blocked = true;
  10.            }
  11.         });
  12.     } catch(ex){
  13.         block = true;
  14.     }
  15.     if(blocked){
  16.         alert("弹出窗口被阻止");
  17.     }   
  18. </script>
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1

主题

63

回帖

149

积分

注册会员

积分
149
发表于 2024-5-24 19:15:09 | 显示全部楼层
感谢分享,受益匪浅!
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 打卡月天数:0
  • 打卡总奖励:93
  • 最近打卡:2024-09-19 09:19:04

0

主题

80

回帖

303

积分

中级会员

积分
303
发表于 2024-5-31 01:27:15 | 显示全部楼层
牛逼
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 打卡月天数:0
  • 打卡总奖励:609
  • 最近打卡:2024-04-28 08:28:05

1

主题

85

回帖

862

积分

等待验证会员

积分
862
发表于 2024-7-16 14:20:34 | 显示全部楼层
感谢分享,受益匪浅!

0

主题

39

回帖

77

积分

注册会员

积分
77
发表于 2024-8-6 20:05:23 | 显示全部楼层
666666666666

2

主题

56

回帖

170

积分

注册会员

积分
170
发表于 2024-8-7 03:28:59 | 显示全部楼层
我想了解更多

2

主题

46

回帖

138

积分

注册会员

积分
138
发表于 2024-8-8 04:02:52 | 显示全部楼层
感谢分享,受益匪浅!

2

主题

62

回帖

168

积分

注册会员

积分
168
发表于 2024-8-21 15:13:53 | 显示全部楼层
已测试,非常不错

2

主题

38

回帖

122

积分

注册会员

积分
122
发表于 2024-8-25 16:48:27 | 显示全部楼层
666666666666

1

主题

37

回帖

97

积分

注册会员

积分
97
发表于 2024-9-2 22:46:34 | 显示全部楼层
确实牛逼
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 11:26 , Processed in 0.090210 second(s), 27 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表