jQuery Mobile中的页面加载与跳转机制
第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的。其中这个框架的页面加载机制便是其中一个。如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按钮后Javascript就是不执行,而用F5刷新页面后又可以正常执行等。
即使我们明白了HTML文件与jQuery Mobile中page概念的区别,也还是不能解决上述问题。当然,了解这个是一个大前提。原来,jQuery Mobile是用Ajax的方式加载所有HTML中的标记data-role="page"的DIV元素中,第一个HTML页面一般都是完全加载,包括 HEAD
和
BODY
都会被加载到DOM
中,完成后便是链接到的其他页面内容的加载。 第二个HTML页面只有 BODY
中的内容会被以Ajax的方式加载到头一个HTML的 DOM中。
并且第二HTML页面的 BODY
中的内容也并非全部加载,而仅仅是其中的第一个带data-role="page"属性的DIV会被加载进去,其余的东西则无缘进入页面渲染。
直接上代码,或许更容易让人明白些:
index.html
<!DOCTYPE html><html lang="en"><head><!-- META TAGS Declaration --><meta charset="UTF-8"><title>TEst</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" /><meta name="apple-mobile-web-app-capable" content="yes" /><link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script> <script>$(document).on('pagebeforeshow', '#foo', function(){ alert($('#body-test').html());});</script> </head><body id="body-test"><div data-role="page" id="portfolio" data-add-back-btn="true"> <div data-role="content" data-theme='c' ><a href="test.html" data-role="button">Go to Bar</a></div></div><!-- Page Project #1 --></body> </html>
test.html
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="style/jquery.mobile-1.3.1.css" /><script src="jquery-js/jquery-1.10.1.js"></script><script src="jquery-js/jquery.mobile-1.3.1.js"></script><title>Foobar</title></head><body><div data-role="page" id="foo"><div data-role="content"><a href="#bar" data-role="button">Go to Bar</a></div></div><div data-role="page" id="bar"><div data-role="content"><p>Bar</p></div></div></body> </html>
参考资料来源:http://stackoverflow.com/questions/17403825/link-fails-to-work-unless-refreshing/17403907#17403907
转载于:https://www.cnblogs.com/pinocchioatbeijing/p/3463857.html
jQuery Mobile中的页面加载与跳转机制相关推荐
- jQuery Mobile 手动显示ajax加载器,提示加载中...
在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ...
- jquery中的页面加载方法load()
load方法会在元素的onload事件中绑定一个处理函数,如果处理函数绑定给window对象,则会在所有内容(包括窗口,框架,对象和图片等)加载完毕后触发, 如果处理函数绑定在元素上,则会在元素的内容 ...
- vue 点击渲染ajax,vue中在页面加载时发送ajax请求获取数据渲染不到页面上
ajax是异步执行的. {{bookId}} 在setData里面处理数据 export default { name: 'app', data() { bookId : '' }, created( ...
- 页面加载自动跳转功能 比如localhost8080
一行代码搞定 0为0秒后跳转 url是你要跳转的网址 也可以是自己写的某个页面 <meta http-equiv="refresh" content="0;URL= ...
- jQuery的页面加载事件
window.οnlοad=function(){...}作用是当页面加载的时候可以调用某些函数,例如: window.onload = function() {alert("加载成功&qu ...
- jQuery的页面加载完毕事件?
很多时候我们需要获取元素,但是必须等到该元素被加载完成后才能获取.我们可以把js代码放到该元素的后面,但是这样就会造成js在我们的body中存在不好管理.所有页面加载完毕后所有的元素当然已经加载完毕. ...
- html加载状态,js等待页面加载完成
页面加载完成后等待一段时间在执行js的方法,时间例如方法: function test(){return 1;} 页面加载完毕事件: window.onload = function(){ setTi ...
- 打造亚秒级页面加载速度网店实践经验
美国的创智赢家(Shark Tank),英国的龙穴之创业投资(Dragons' Den),以及德国的"Die Hohle der Lowen (DHDL)"等电视节目为年轻的初创公 ...
- 浅谈前端实现页面加载进度条以及 nprogress.js 的实现
以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...
最新文章
- 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击
- 【盘点】北美顶尖学府的人工智能与智能车实验室
- python 操作txt 写入列表
- 8_用opencv调用深度学习框架tenorflow、Pytorch、Torch、caffe训练好的模型(20190212)
- linq to entity 基础
- ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】
- 创建外部快照_快照事件:现在如何仅通过拍照即可创建日历事件
- Java并发-ThreadLocal
- Jdk 和 jre 的 关系和区别
- HTTP权威指南记录 ---- 网络爬虫
- 产品管理的工作流程是什么
- 软件基本功:避免难度写法,代码简单易懂才是高手
- (六十五)for循环
- 新闻管理系统(增删改查+分页+阅读+发布评论+删除评论+数据库)
- 【音乐拼接】mp3格式
- ios识别人脸自动拍照_iOS 相机流人脸识别(一)-人脸框检测(基于iOS原生)
- 无法定位libjasper-dev
- 95后阿里P7晒出工资单:真的是狠狠扎心了...
- 计算机的硬件地址在哪看,电脑的MAC地址在哪里查看
- 快手发布《2021磁力引擎营销通案》,以信任基因赋能全域营销