请求错误页面的jQuery Mobile和锚点链接

时间:2011-06-26 01:05:13

标签: jquery-mobile

我开发了一个rails应用程序,其主要功能是一个商业搜索页面,其功能是显示一个业务结果页面和一个允许用户进一步搜索/过滤结果的表单。

最近,我使用jQuery Mobile为此应用程序实现了一个移动界面,其设置如下:

业务结果页面是它有两个div,数据角色为“page”。第一个是用户在访问时看到的结果的实际页面,第二个jQuery Mobile页面具有HTML id“search-form”并包含过滤结果所需的表单字段。

在第一页的标题栏中有一个按钮,该按钮链接到带有数据对话框的#search-form。

如果有人直接访问site.com/businesses然后点击链接,jQuery Mobile会正确加载site.com/businesses#search-form到模态对话框并且蠕虫可以正常工作,但是如果他们开始浏览在任何其他页面上的会话,该对话框始终包含其原始页面的内容。

例如,如果他们来到site.com/someotherpage的网站,然后以某种方式导航到site.com/someotherpage#/businesses并单击过滤器按钮,jQuery Mobile会错误地请求并使用内容site.com/填充对话框someotherpage#搜索形式

我尝试更改#search-form中的过滤器链接,实际上使用#search-form硬编码当前页面的完整绝对路径,但没有任何效果。

在此先感谢,我会为这个疯狂!这是阻止我部署移动版本的唯一因素。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。放置在#thirdPage中的任何按钮都可以通过jQuery很好地打包,但是它们会从用户加载的第一页创建弹出窗口。此外,对话框上的后退按钮将指向第一页。

静态页面中加载了一个按钮(如下所示),但同样适用于我通过pagebeforecreate事件插入的动态创建的按钮。

我开始认为所有弹出窗口都应放在用户到达的第一页的html文件中。但这没有帮助,而且相当尴尬。

顺便说一句,在桌面Chrome浏览器中测试它运行正常。只有在我的Android上才会出现问题。但这很可能是出于前面提到的相同原因:在Chrome上我会自己加载第三页,而在Android上我将通过第一页和第二页到达。

另一个特点是,当在桌面上的Chrome中进行测试时,我附加到#thirdPage的pagebeforecreate()事件再次被称为 ,即使该对话框完全在#thirdPage元素之外而不是有我附加的任何自定义事件。第二次调用pagebeforecreate()不会发生在Android上。

另一个有趣的事情:带有这些问题的HTML页面已被赋予<基数> jQueryMobile的元素,href属性不以html结尾。所有其他页面最后都会得到“.html”。怪异。

  <html>
     <body>
      <div id="thirdPage" data-role="page" data-url="third">
       <a href="#desiredPopup" data-role="button" data-rel="dialog" data-transition="pop">Give me the popup</a>
      </div>
      <div id="desiredPopup" data-role="dialog" data-url="purchase" tabindex="0">
        <a href="#thirdPage" data-rel="back" data-role="button" data-inline="true" data-icon="back">Back to page "three"</a>
      </div>
     <body>
  <html>