JQuery Mobile несколько файлов HTML - PullRequest
4 голосов
/ 23 мая 2011

Это довольно раздражает, но я создаю мобильный сайт jQuery. Но если у меня есть страница с именем about, я хочу это в файле с именем about.html. Мне удалось заставить это работать, но внезапно я не могу получить ссылку, чтобы открыть отдельную страницу. Я перепробовал все виды вещей, и теперь у меня белая страница.

Вот тестовый код, с которым я связывался:

Индекс:

<!DOCTYPE html>
<html>
    <head>
        <title>Notification Example</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
        <link rel="stylesheet" href="style.css" />
        <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
        <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.min.js"></script>
        <script type="text/javascript" charset="utf-8">
            // Wait for PhoneGap to load
            //
            function onLoad() {
                document.addEventListener("deviceready", onDeviceReady, false);
            }

            // PhoneGap is ready
            //
            function onDeviceReady() {
                // Empty
            }

            $('#about').live('pagecreate',function(event){ AboutTest(); });
            $('#test2').live('pagecreate',function(event){ alert("loaded the page 2!"); });

            function AboutTest(){
                var element = document.getElementById('deviceProperties');

                element.innerHTML = 'Device Name: '     + device.name     + '<br />' +
                                    'Device PhoneGap: ' + device.phonegap + '<br />' +
                                    'Device Platform: ' + device.platform + '<br />' +
                                    'Device UUID: '     + device.uuid     + '<br />' +
                                    'Device Version: '  + device.version  + '<br />';
            }
        </script>
    </head>
    <body onload="onLoad()">
        <div data-role="page" id="home">
            <div data-role="header"><h2>Page 1</h2></div>
            <div data-role="content">
                <a href="about.html" data-url="about.html">testing</a>
            </div><!-- /content -->
            <div data-role="footer"><h4>Footer</h4></div>
        </div><!-- /page -->
    </body>
</html>

Вот моя тестовая страница для ссылки, about.html:

 <div data-role="page" id="about" data-title="about">
     <div data-role="header"><h1>Page 2</h1></div>
     <div data-role="content"><p id="deviceProperties">Loading device properties...</p></div>
     <div data-role="footer"><h4>Footer</h4></div>
 </div>

Теперь все это работало нормально, код JavaScript работал и т. Д. Затем я кое-что изменил. Я не уверен что, но я сломал это и для моей жизни я не могу видеть это. Вся идея всех страниц на одной странице кажется такой глупой и бессмысленной.

Ответы [ 3 ]

4 голосов
/ 24 мая 2011

Это работает для меня, если вы удалите "data-url='about.html'" из ссылки в содержании. Этот атрибут предназначен для страницы div.

Ваша вторая страница (about.html) может быть полной HTML-страницей, если она содержит текущий текст в теле. Таким образом, jQuery Mobile прекрасно работает, так как загружает весь файл и затем извлекает страницу div. Вы можете представить несколько страниц на одной странице как способ кеширования содержимого в DOM, если это кажется более разумным!

1 голос
/ 26 июля 2012

Ваша ссылка на ссылку на «внешнюю страницу» должна иметь следующий атрибут:

rel="external"

Вы можете добавить data-ajax="false"

.

Чтобы ваша ссылка выглядела так:

<a href="about.html" data-url="about.html" rel="external">testing</a>

или

<a href="about.html" data-url="about.html" rel="external" data-ajax="false">testing</a>
0 голосов
/ 23 мая 2011

Вы должны включить код страницы about на главной странице индекса в виде отдельного элемента div. Если у вас нет особой причины иметь более одной страницы? Это также ускорит загрузку вашей страницы (сохраняя все на одной странице).

Таким образом, индекс теперь будет иметь:

<div data-role="page" id="home">

    <div data-role="header"><h2>Page 1</h2></div>

    <div data-role="content"></div>

    <div data-role="footer"></div>

</div>

<div data-role="page" id="about" data-title="about">

    <div data-role="header"><h1>Page 2</h1></div>

    <div data-role="content"><p id="deviceProperties">Loading device properties...</p>      </div>

    <div data-role="footer"><h4>Footer</h4></div>

</div>

Имеет ли это смысл?

Кроме того, вы проходите процесс загрузки jQuery, поэтому вам действительно нужно использовать встроенную в JQuery DOM-навигацию для обновления содержимого div - это намного проще! Затем вы можете удалить все события onLoad () и т. Д.

Если вы хотите загрузить страницу на реальной внешней странице (как говорит ваш ОП), вы также можете добавить rel = "external" к ссылке "about".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...