我有两页,A和B:
A - >登录页面。
B - >包含HTML元素和iScoll“pull to refreash”代码。
evrey的东西工作正常,但是当我从A到B登录时,iScroll内容没有出现,如果我为B页刷新内容会显示回来并且运行良好,这是iScroll代码:
<script type="text/javascript">
var myScroll,
pullDownEl, pullDownOffset,
generatedCount = 0;
function pullDownAction() {
setTimeout(function () {
var el, li, i;
el = document.getElementById('thelist');
var returnedLIs = "";
for (i = 0; i < 3; i++) {
returnedLIs += '<li><a href="#" data-ajax="false" class="PDFLink"></a></li>';
}
$(returnedLIs).prependTo($('#thelist'));
myScroll.refresh();
}, 0);
}
function loaded() {
pullDownEl = document.getElementById('pullDown');
pullDownOffset = pullDownEl.offsetHeight;
myScroll = new iScroll('wrapper', {
hideScrollbar:false,
useTransition: true,
topOffset: pullDownOffset,
onRefresh: function () {
if (pullDownEl.className.match('loading')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
}
},
onScrollMove: function () {
if (this.y > 5 && !pullDownEl.className.match('flip')) {
pullDownEl.className = 'flip';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';
this.minScrollY = 0;
} else if (this.y < 5 && pullDownEl.className.match('flip')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
this.minScrollY = -pullDownOffset;
}
},
onScrollEnd: function () {
if (pullDownEl.className.match('flip')) {
pullDownEl.className = 'loading';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';
pullDownAction(); // Execute custom function (ajax call?)
}
}
});
setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
</script>
任何人都可以帮助,,,
针对A.aspx的编辑:<head>
部分 - &gt;登录页面:
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<link href="css/Site.css" rel="stylesheet" type="text/css" />
<!-- Validition Library -->
<script src="Validate/jquery.validVal-4.3.3.js" type="text/javascript"></script>
</head>
B.aspx的修改:<head>
部分:
<head runat="server">
<%--PULL TO REFREASH--%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<%--PULL TO REFREASH--%>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<%--PULL TO REFREASH--%>
<script type="text/javascript" src="jq/iscroll.js"></script>
<%--PULL TO REFREASH--%>
<link href="css/Site.css" rel="stylesheet" type="text/css" />
<%--pull to refresh--%>
<script type="text/javascript">
var myScroll,
pullDownEl, pullDownOffset,
generatedCount = 0;
function pullDownAction() {
setTimeout(function () {
var el, li, i;
el = document.getElementById('thelist');
var returnedLIs = "";
for (i = 0; i < 3; i++) {
returnedLIs += '<li><a href="#" data-ajax="false" class="PDFLink"></a></li>';
}
$(returnedLIs).prependTo($('#thelist'));
myScroll.refresh();
}, 0);
}
function loaded() {
pullDownEl = document.getElementById('pullDown');
pullDownOffset = pullDownEl.offsetHeight;
myScroll = new iScroll('wrapper', {
hideScrollbar:false,
useTransition: true,
topOffset: pullDownOffset,
onRefresh: function () {
if (pullDownEl.className.match('loading')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
}
},
onScrollMove: function () {
if (this.y > 5 && !pullDownEl.className.match('flip')) {
pullDownEl.className = 'flip';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';
this.minScrollY = 0;
} else if (this.y < 5 && pullDownEl.className.match('flip')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
this.minScrollY = -pullDownOffset;
}
},
onScrollEnd: function () {
if (pullDownEl.className.match('flip')) {
pullDownEl.className = 'loading';
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';
pullDownAction(); // Execute custom function (ajax call?)
}
}
});
setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
</script>
<%--pull to refresh--%>
</head>
答案 0 :(得分:1)
让我向您解释发生了什么。
您有2个单独的HTML页面。每个页面都有一个带有javascript内容的HEAD。
您的问题是jQuery Mobile如何处理页面加载。只有第一页完全加载。当下一页即将加载时,它的主体仅被加载到DOM中,并且其余部分被丢弃。这是因为第一页已经在DOM中,没有必要在内部使用HEAD。
这可以通过几种方式解决:
另外看一下,关于这个+示例,我有另一个很好的答案: Why I have to put all the script to index.html in jquery mobile