通过js引用地址传递参数

更新lhgdialog弹窗插件的时候,发现它用了这种方式来引用js脚本:

<script type="text/javascript" src="lhgdialog.min.js?t=self&s=chrome"></script>

其中,t和s是需要传递到lhgdialog.min.js脚本里面去的参数,我觉得这种用法很有趣,正好写一个js文件的时候碰到了一个问题,我要给一个表格注册一系列事件,比如单击行就选中当前行,并且里面的复选框也勾上了,这种用法会有两种场景:只能选一行,和可以选多行

因为我要在同一个脚本里面注册,那么就必须页面在调用本js文件的时候指定一个参数,告诉是把表格注册成选单行的还是选多行的,在没做成插件的基础上,你必须在文件里指定一个变量,然后在引用页给这个变量赋值,我在js文件里面再判断这个值,才来判断怎么去注册这个表格事件,如

<script type="text/javascript" src="my.js"></script>
<script type="text/javascript">
	type="single";
</script>
//jsy文件里面的内容
if(type=="single")
	//do something
else
	//do something

现在发现既然可以从网址传过来,那么不如这样:

<script type="text/javascript" src="my.js?type=single"></script>

那么如何取值呢?

原生js没有读取get参数的能力的,在网上一查,可以从DOM入手,因为毕竟src是写在页面里面的,这样你你找到对应的<script>元素,把它的src属性读取出来就是了,

问题只有一个了,哪个标签才是调用本js的呢?小技巧来的,因为js是解释型的语言,边加载边执行,那么执行到我这个js的时候,后面的js还没加载到,那么一定是“最后”一个script标签,问题解决了。

当然,你先万不要写到onload事件里面或jQuery的$(function(){});里面,这个时候所有的脚本都加载完了。。。

var src=$("script:last").attr("src");//此处已取出
 $(function(){
	//用正则,还是别的什么方式,看你习惯了
	var args=(/type=([^#&]+).*/i.exec(src)||["","single"])[1];
	alert(args);
});

当然,也有人提出,给script加一个id不就可以了么?当然可以,只是这样的话,别人就必须知道你的js文件是怎么写的id了,这个方不方便自己体会,在多数场景,是很方便的,只不过上面说的纯动态的方法,用起来更轻松

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值