使用split函数分别分割,先以"?"分割,再以"&",最后再以“=”,并将之存入一个对象
示例的地址参数为:
http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23
<!DCOTYPE>
<html>
<head>
<title>分解url</title>
<script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
$(function(){
$('.btn').click(function(){
let firsturl = $('.url').text().split('?');
let urlobj ={};
let secondurl = firsturl[1].split('&');
for(let i=0;i<secondurl.length;i++){
let thirdurl = secondurl[i].split('=');
urlobj[thirdurl[0]] = thirdurl[1];
}
console.log(urlobj);
})
})
</script>
</head>
<div class="url">http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23</div>
<button class="btn" >分解</button>
</html>
============================分割线=======================
关于上述的加载的jQuery文件,有integrity属性和crossorigin属性?那么他们都分别代表什么呢???
integrity
它相当于是用来校验加载的cdn文件是否被人篡改了。通过比对两次的签名,如果被人篡改了(比如说,运营商劫持加了广告等),那么两次的签名比对不成功,就不会执行该js文件。像图中代码的jQuery文件就不会执行,某些网站的功能就无法实现。
当然为了保证网站的稳定性,可以增加一个B计划(当失败时,使用本站的资源文件):
<script crossorigin="anonymous" integrity="sha256-xxxx" src="http://cdn.example.com/js/jquery.js"></script>
<script>
if(!window.jQuery) {
document.write('<scr' + 'ipt src="/js/jquery.js"></scr' + 'ipt>');crosorgin属性
}
</script>
crossorigin
通常我们使用window.onerror来捕获js脚本的错误信息。
但是对于跨域调用的js脚本,onerror事件只会给出很少的报错信息:error: Script error.
这个简单的信息很明显不足以看出脚本的具体错误,所以我们可以使用crossorigin属性,使得加载的跨域脚本可以得出跟同域脚本同样的报错信息:
<script crossorigin src="http://www.lmj.com/demo/crossoriginAttribute/error.js"></script>
如果是这样,www.lmj.com的服务器必须给出一个Access-Control-Allow-Origin的header,否则无法访问此脚本。