关于mui页面跳转(跳转及参数传递)
页面跳转比较简单的一种写法如下,extras中可以传递扩展参数(param),
传值:
mui.openWindow({
url : 'mspck.jsp',
id : 'mspck.jsp',
extras : {
openid : openid
}
});
取值:
var self = plus.webview.currentWebview();
var name = self.name;
var version = self.version;
但上述写法我无法获取到参数,网上有提到如果目标页面是预加载的页面,则extras所传参数无效,所以我后来看了下可能是目标页面的init()函数使参数无效,期间一个疑问是,我取值的时候,所遇到的问题是plus是未定义的,不知道跟上述的猜测原因是否同属一个问题
故而采用URL传递参数,写法如下:
mui.openWindow({
url : 'mspck.jsp?openid='+ openid,
id : 'mspck.jsp'
});
获取参数的方式如下:
//获取url中的targetId参数
var targetId = getUrlParam('targetId');
// 获取url中的参数的函数
function getUrlParam (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!= null) {
return unescape(r[2]);
}else{
return null;
}
}
PS:对于跳转来说,有两种方式
方式一:用类似mui.openWindow的方式在页面上直接打开另一页面
方式二:通过Struts的配置跳转,Struts中可配置方法成功返回后的跳转至指定页面
对于上述两种方式的跳转,浏览器中的URL会呈现出两种状态(当然,前提是类似方式一那样的全路径跳转,这时URL指向的就是页面所在的工作空间)
方式一对应的URL依然是全路径,指向页面所在的工作空间,如:
http://IP:8090/order/modules/order/mspxd.jsp?openid=213456
方式二对应的URL就会变为运行方法的调用,如:
http://IP:端口/orderAction/mspOrderingQuery2.action?openid=23451&ddbh=7231
¥¥¥¥¥¥¥下面重点来了:&&&&&&&
如果使用mui.openWindow的方式来打开页面,要注意URL属性的编写,否则对于方式二的URL,是找不到所要跳转的页面,具体写法如下:
mui.openWindow({
url : '../order/modules/order/mspxd.jsp?openid=234546',
id : 'mspxd.jsp'
});
说明:将指定页面所在工作空间路径写完整,然后重点是开头的省略号,“..”别小看这几个点,能不能跳转成功就靠他们了,这几个点的意思是URL的路径回退一步(两步?),然后URL就剩下了IP和端口的部分,这时候就明白了吧,工作空间路径就是补全了指定页面的路径,这时候也就回到了方式一的全路径URL的跳转方式