2014年8月12日 星期二

jQuery Mobile 載入新頁面

使用 jQuery Mobile 時,jQuery Mobile 預設是用 ajax 載入頁面的內容,所以使用連結或送出

表單到另一個頁面應是把 <body> 裡的資料載入呈現,body 以外的 script, js, css 不會再被重

新要求載入、執行。


測試程式碼:

<body>
    <div>
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
            <li><a href="link2.html">link2</a></li>                
        </ul>
        <a href="link2.html" data-role="none">link2</a>
    </div>
</body>

測試程式碼二:

<script type="text/javascript">
    $(document).ready(function() {
        alert('test');
    });
</script>

<body>
    <div>link test</div>
</body>
(script 放在 head 的 tag 之間)

(以上程式碼要在 head 引入 jQuery Mobile 的 js code)


 
(利用程式碼一連結程式碼二的頁面) 

(用 chrome 的 network 看,有載入所用到的檔案)


(程式碼二的 script 不會被執行) 

 (不會再載入用到的 script)


測試:

把 script 放在 body 裡時,script 有被執行,但是放在 body 之外的其他地方,script 不會被執

行,推測應該是只把 body 裡的程式碼載入呈現。



解決辦法:

關閉 jQuery Mobile 預設的 ajax:在 <a>、<form> 裡加入 data-ajax="false"。

修改程式碼一

<body>
    <div>
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
            <li><a href="link2.html" data-ajax="false">link2</a></li>                
        </ul>
        <a href="link2.html" data-role="none" data-ajax="false">link2</a>
    </div>
</body>

(script 成功被執行)

沒有留言:

張貼留言