【问题标题】:jQuery Mobile URL converting hash (#) to %23 on Android browserjQuery Mobile URL 在 Android 浏览器上将哈希 (#) 转换为 %23
【发布时间】:2012-03-21 04:46:50
【问题描述】:

我正在为我的网站使用 jQuery Mobile 多页模板,但是当我从 Android 浏览器访问该网站时,它无法正常工作。

问题在于,浏览器将#标签转换为%23

例如,我可以在 iPhone 中访问此链接 www.domain.com/abc.php?id=1234#show_map,但 Android 显示此链接如下:www.domain.com/abc.php?id=1234%23show_map

我该如何解决这个问题?我应该创建新页面而不是哈希标签页面还是如何为 Android 浏览器添加例外?

谢谢

更新: 以下代码不适用于 Android,但适用于其他任何地方:

    <script type="text/JavaScript">
        window.done_mapping=false;
        contingency = function() {
            if(window.done_mapping) return true;
            window.location.href='#roast_map';
            window.location.reload();
        }
        contingency_email = function() {
            if(document.getElementById("email")) return true;
            window.location.href+='#email';
            window.location.reload();
        }
    </script>

    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="a">
            <li class="goMap"><a href="#roast_map" data-transition="slide" onclick="contingency();">View on map</a></li>
            <li class="goMap"><a href="#email" data-transition="slide" onclick="contingency_email()">E-mail Results</a></li>
        </ul>
    </div>

【问题讨论】:

  • 您是否尝试对您的网址进行编码?
  • 据我所知,Android 浏览器可以很好地处理片段标识符。你确定你不是偶然在服务器端对哈希字符进行编码吗?你能发布一个真实的 URL 来证明这个问题吗?
  • 这是我的 js 代码:&lt;script type="text/JavaScript"&gt; window.done_mapping=false; contingency = function() { if(window.done_mapping) return true; window.location.href+='#roast_map'; window.location.reload(); } HTML:&lt;li class="goMap"&gt;&lt;a href="#roast_map" data-transition="slide" onclick="contingency();"&gt;View on map&lt;/a&gt;&lt;/li&gt;
  • 不要在href末尾添加哈希。尝试设置window.location.hash
  • 我在哪里设置 window.location.hash?在脚本标签内?

标签: javascript jquery android mobile jquery-mobile


【解决方案1】:

您应该使用 jquery 编码/解码方法来编码包含特殊字符的 url。例如:

var url = 'www.domain.com/abc.php?id=1234#show_map'; var encodedUrl = encodeURIComponent(url);

【讨论】:

  • 我认为encodeURIComponent是一个原生的javascript函数,而不是一个jQuery方法。
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 2011-08-13
  • 2019-10-27
  • 2019-05-23
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多