jQuery Mobile: 页面弹窗相互干扰。

3
我有两个缩小的html文件,i1.html和i2.html——它们几乎相同,应该很容易运行。
i1.html(页面1)有一个弹出窗口1,允许用户留在页面1或转到i2.html(页面2)。
i2.html(页面2)有一个弹出窗口2,应该允许用户留在页面2或转到i1.html(页面1)。
我在Chrome和Firefox中遇到的问题是,页面1的弹出窗口可以使用户转到i2.html(页面2)。但是一旦进入i2.html,就无法导航到页面1。弹出窗口没有响应。如果我进行Shift刷新,它会响应,但是可以注意到弹出窗口页面混乱了(看起来像来自i1.html的太多按钮)。
我有一个相关的问题,如何调试一个按钮不起作用。谢谢。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>i1</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  </head>
  <body>
    <div data-role="page" id="page1">
       <div data-role="header">
           <h1>Page 1</h1>
       </div>
       <div data-role="main" class="ui-content">
          <p><a href="#popup1" data-role="button" data-rel="dialog" data-transition="pop">Navigate via popup dialog</a></p>
       </div>

        <div data-role="footer">
           <h1>page bottom</h1>
        </div>
    </div>

    <!-- Start #popup page -->
    <div data-role="page" id="popup1">

        <div data-role="header" data-theme="b">
            <h1>Dialog</h1>
        </div><!-- /header -->

        <div role="main" class="ui-content">
            <h2>Popup</h2>
            <p>Some text</p>
            <p><a href="#page1" data-rel="back" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Back to page one</a></p>
            <p><a href="i2.html" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Go to Page2</a></p>
        </div><!-- /content -->

        <div data-role="footer">
            <h4>Pop up Footer</h4>
        </div><!-- /footer -->
    </div><!-- /page popup -->
  </body>
</html>

并且 i2.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>i2</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  </head>
  <body>
    <div data-role="page" id="page2">
       <div data-role="header">
           <h1>Page 2</h1>
       </div>
       <div data-role="main" class="ui-content">
          <p><a href="#popup2" data-role="button" data-rel="dialog" data-transition="pop">Navigate via popup dialog</a></p>
       </div>

        <div data-role="footer">
           <h1>page bottom</h1>
        </div>
    </div>

    <!-- Start #popup page -->
    <div data-role="page" id="popup2">

        <div data-role="header" data-theme="b">
            <h1>Dialog</h1>
        </div><!-- /header -->

        <div role="main" class="ui-content">
            <h2>Popup2</h2>
            <p>Some text</p>
            <p><a href="#page2" data-rel="back" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Back to page 2</p>
            <p><a href="i1.html" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Go to Page 1</a></p>
        </div><!-- /content -->

        <div data-role="footer">
            <h4>Pop up Footer</h4>
        </div><!-- /footer -->
    </div><!-- /page popup -->
  </body>
</html>

关于(我有一个相关的问题,如何调试一个按钮没有任何反应)-- 打开Chrome浏览器控制台 -- 如果有错误,则控制台将显示它 -- https://developer.chrome.com/devtools/docs/console - Tasos
准确地说,我尝试了对话框,但它没有起作用(同样的问题),因此我放弃了它。 - Ray
使用页面应该可以正常工作,对吧? - Ray
我认为,如果在1.5中删除了dialog,那么(data-rel="dialog")也就无效了。请查看JQM网站以澄清。 - Tasos
注意:对话框尚未删除,这将在1.5版本中实现,而当前版本为1.45。回到主要问题,您测试了代码并获得了相同的结果吗? - Ray
显示剩余4条评论
1个回答

1

好的,我进行了一次测试

发生的情况是JQM通过ajax加载页面。当您导航到第二页时,这个问题就会出现。

<div role="main" class="ui-content">
            <h2>Popup2</h2>
            <p>Some text</p>
            <p><a href="#page2" data-rel="back" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Back to page 2</p>
            <p><a href="i1.html" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Go to Page 1</a></p>
        </div>

我怀疑你在另一个页面上有<div role="main" class="ui-content">,因此按钮无法正常工作,因为没有DOM代码可以运行。

enter image description here

关闭ajax导航可以解决问题 data-ajax="false"

   <p><a href="i1.html" data-ajax="false" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Go to Page 1</a></p>

   <p><a href="i2.html" data-ajax="false" class="ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-back ui-btn-icon-left">Go to Page2</a></p>

更多信息请点击这里

http://demos.jquerymobile.com/1.2.1/docs/pages/page-links.html

现在正常工作


谢谢。如果我问一下,你是如何调试的呢?此外,Ajax不是按定义要去服务器吗?哪个服务器?我正在阅读你提到的文档,但我不明白他们是如何涉及Ajax的,因为没有服务器? - Ray
好吧,大约一年多以来我没有使用JQM进行任何项目了,老实说,我避开了对话框,因为它们很麻烦:)所以我使用了弹出窗口。当我导航到第二页时,我如何调试并查看问题是,在Chrome中检查按钮(悬停在按钮上,右键单击,检查),然后发现第二页代码的一部分没有加载,然后我意识到几年前阅读文档时的AJAX事情。 - Tasos
请问您能帮我理解一下在这个上下文中 AJAX 是什么意思吗?(显然不是指服务器通信,对吧?) - Ray
AJAX已经内置在Jquery中,您可以使用它来加载HTML页面或向服务器发出请求等--更多信息请参见此处--http://api.jquery.com/jquery.ajax/ - Tasos
@Ray -- 世界上使用最广泛的语言之一是第六位,怎么可能过时呢?其中三个最高的位置被C版本占据了--http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html--你从哪里听说它已经过时了? - Tasos
显示剩余14条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接