mobile jquery onload函数问题

一、mobile-jquery中body-onload函数的执行问题

   问题描述:在使用mobile-jquery框架写网页的时候,从A页面跳转到B页面的时候,B页面中body的onload函数不执行,但是在刷新一下之后能正常执行了。


问题原因和解决方式:Jquery Mobile支持所有标准的html格式,为了让体验更加流畅,Jquery Mobile会把同一个域下的所有指向页面的链接都会自动转为ajax请求,并且用动画的转场效果实现切换。指向别的域的链接或者是含有 rel="external", data-ajax="false" 属性的链接以及含有target属性的链接不会通过ajax加载,页面会整体被刷新。

   这个问题困扰了我一个下午,开始我以为是js函数的问题,但是我用一个只有alert语句的函数去测试还是没有用。网上说的改变js函数放置位置的方法我也试了,没用。后来我用其他页面进行测试的时候发现没有引入mobile-jquery框架的普通html页面可以很正常的实现跳转和onload函数。于是我猜想这个mobile-jquery的onload函数可能和普通的html页面不一样。于是我上网搜了半天的mobile-jquery页面跳转的问题,终于找到一篇博文解决了这个问题(http://www.cnblogs.com/shenbin/archive/2013/03/19/2969610.html) 。

    我解决了问题简直是兴奋,必须写一篇博文来纪念一下。

这个问题如下

    这是两个使用了mobile-jquery框架的页面,从页面A跳转到页面B的时候,页面B的onload函数不执行。
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>页面A</title>
    <link rel="shortcut icon" href="../jq/demos/favicon.ico">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700">
    <link rel="stylesheet" href="../jq/demos/css/themes/default/jquery.mobile-1.4.5.min.css">
    <link rel="stylesheet" href="../jq/demos/_assets/css/jqm-demos.css">
    <link rel="stylesheet" href="mycss.css">
    <script src="../jq/demos/js/jquery.js"></script>
    <script src="../jq/demos/_assets/js/index.js"></script>
    <script src="../jq/demos/js/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
    <div data-role="page" id="pageone">
        <div data-role="content" >
            <a href="test2.html" data-ajax="false">点击我可以跳转到页面B</a>
        </div>
    </div>
</body>
</html>
    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>页面B</title>
    <link rel="shortcut icon" href="../jq/demos/favicon.ico">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700">
    <link rel="stylesheet" href="../jq/demos/css/themes/default/jquery.mobile-1.4.5.min.css">
    <link rel="stylesheet" href="../jq/demos/_assets/css/jqm-demos.css">
    <link rel="stylesheet" href="mycss.css">
    <script src="../jq/demos/js/jquery.js"></script>
    <script src="../jq/demos/_assets/js/index.js"></script>
    <script src="../jq/demos/js/jquery.mobile-1.4.5.min.js"></script>
</head>
<body onload="onLoad()">
    <div data-role="page" id="pageone">
        <div data-role="content" >
            <a>我是页面B</a>
        </div>
    </div>
</body>
<script type="text/javascript">
    function onLoad(){
        alert("test");
    }
</script>
</html>
这是个普通的html页面,它可以正常的跳转到页面B,页面B的onload函数也能执行。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta charset="utf-8">
    <title>普通html页面</title>
</head>
<body >
    <a href="test2.html">点我可以跳转到页面B</a>
</body>
</html>
把页面A中的<a>元素改成   <a href="test2.html" data-ajax="false">点击我可以跳转到页面B</a>  问题就解决了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值