javascript - 非 PushState 浏览器中的 JQuery Mobile 查询字符串问题

标签 javascript jquery regex url-rewriting jquery-mobile

我正在尝试从 JQuery Mobile beta 3 中的查询字符串中提取变量 cid。

普通 URL 的示例是 /category.php?cid=23

JQuery 移动 URL 示例 /#/category.php?cid=23

由于 JQuery Mobile Beta 3 的 url 重写,我可以在大多数浏览器中使用以下函数正常从查询字符串中提取变量。但IE不支持新的浏览器历史记录功能。 https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

因此,我需要一种方法从上面看到的 JQuery Mobile Url 中提取查询字符串,而我通常在下面使用的以下函数无法正常工作。

function getQuerystring(key) {
   var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
   var r=[], m;
   while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
   return r;
}

我正在寻找一个替代的正则表达式,它可以在不支持history.pushState的浏览器中找到散列变量或完全支持一些其他解决方案。我在文档中搜索了此问题的解决方案,但没有找到任何内容。我认为这将是 JQuery Mobile 团队已经考虑并解决的问题,我可能只是错过了一些非常明显的东西。预先感谢您的帮助。

最佳答案

工作演示(我认为)

相关链接:

JS

$('#page2').live('pageshow', function(event, ui) {
    alert('Page 2 - CID: ' + getParameterByName('cid'));
});

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

HTML(将 rel="external"添加到链接)

<div data-role="page" id="home">
    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
            <li data-role="list-divider">
                Home Page
            </li>
            <li>
                <!-- 
                    Pass Parm Here before the hash page 
                    and treating link as external 
                -->
                <a href="?cid=1234#page2" rel="external">Page 2</a>
            </li>
        </ul>                
    </div>
</div>
<!-- page 2 -->
<div data-role="page" id="page2">
    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
            <li data-role="list-divider">
                Page 2
            </li>
            <li>
                <a href="?cid=4321#home">Home Page</a>
            </li>
        </ul>
    </div>
</div>

关于javascript - 非 PushState 浏览器中的 JQuery Mobile 查询字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7489425/

相关文章:

regex - Dart http请求用表达式语言操作一个网站

javascript - 在 React 表单中处理数字属性

javascript - 重新设计 JavaScript 函数,使所有按钮都可以重用

jQuery sibling 方法和设置高度

javascript - 如何将表单数据从 jQuery 获取到 ASP.NET Controller ?

java - 正则表达式验证 3 个重复字符

javascript - 如何使用 Semantic-UI 中的占位符元素?

javascript - 如何测试 axios 包装器

javascript - slider 未出现

php - 如何在 mysql 中比较/匹配两个逗号分隔值