jQuery Mobile忽略(删除)URL中的查询字符串参数,并仅显示具有哈希标记的URL。但是,您可以仅在pagecontainerbeforechange和data.toPage
为字符串而不是对象时检索querystring。此阶段,完整的URL存储在data.absUrl
中。
您可以使用$.mobile.path.parseUrl().search
方法来检索querystring,或者您可以使用.split("?")
,两者都应该正常工作。
$(document).on("pagecontainerbeforechange", function (e ,data) {
if (typeof data.toPage == "string") {
var url = $.mobile.path.parseUrl(data.absUrl),
querystring = url.search;
var url = data.absUrl,
querystring = url.split("?")[1];
}
});
编辑:如果查询字符串出现在哈希之后,$.mobile.path.parseUrl(url).search
将不会返回任何值,因为它认为它是一个哈希。因此,请使用第二种方法.split("?")
。
另一种可能的方法是利用pagecontainerbeforetransition
,因为它只触发一次并返回data.toPage
对象和data.absUrl
字符串。
自定义函数以处理URL并检索查询字符串
function getParam(url) {
var parsed = $.mobile.path.parseUrl(url),
hash = parsed.hash.split("?");
return {
search: hash[1].split("=")[1]
};
}
监听 pagecontainerbeforetransition
事件;确保 .toPage
和 .absUrl
已定义,.toPage
的 ID 是您想要在其上使用参数的页面。
$(document).on("pagecontainerbeforetransition", function (e, data) {
if ($.type(data.toPage) !== "undefined" && $.type(data.absUrl) !== "undefined" && data.toPage[0].id == "pageID") {
var param = getParam(data.absUrl).search;
$(".selector", data.toPage).text("Retrieved: " + param);
}
});
Demo