现在有这样一个需求,在手机端切换多个不同域的页面,同时该页面可能存在需要的参数,现使用iframe实现。
将不同网页显示在iframeView页面中,路由为/iframeView
,从后台获取到某网页的数据:http://localhost:8081?user=su&pwd=123,现通过路由传参的方式传到iframeView页面。因此iframeView页面得到一串url: /iframeView?url=http://localhost:8081?user=su&pwd=123
问题:url为iframeView页面的参数,当URL参数中存在特殊字符时,服务端或iframe将不能正确识别。因此网页将不能获取url后的参数
方法: 转义+replace
转义内容:
+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D
代码参考:
let url = 'http://localhost:8081?user=su&pwd=123';
let nUrl1 = url.replace(/&/g,'%26'); //全局替换,将使用‘&’替换成%26
let nUrl2 = nUrl1.replace(/\?/g,'%3F'); //注:要替换‘?’,要在前面加个‘\’
url = nUrl2; //注:replace不会改变原来的字符串
//转义结果: http://localhost:8081%3Fuser=su%26pwd=123
获取参数: