比如有 A->B->C->D->E页面
打开app进入A页面,在A页面preload B页面
B页面 直接 js 再 preload C,
C 在plusReady 里 preload D,
D 在 plusReady 里 init E,JS 监听 tap事件 展示E
那么我在A页面的时候 内存中 是否有 B\C\D\E? 或者已经有其中哪些?
比如有 A->B->C->D->E页面
打开app进入A页面,在A页面preload B页面
B页面 直接 js 再 preload C,
C 在plusReady 里 preload D,
D 在 plusReady 里 init E,JS 监听 tap事件 展示E
那么我在A页面的时候 内存中 是否有 B\C\D\E? 或者已经有其中哪些?
@DCloud_MUI_FXY:
我想了一下,可能从 H5+ Specification 的角度来说,webview 少了一个 onshow 事件,如果有这个事件的话,webview B 中 preload 的 webview C 何时被真正创建的问题,就可以由 webview B 自己来控制了,而不必由它的 opener(webview A)来帮忙。
szaos (作者)
补充:
主要希望了解,
1.页面展示的时候其preload的页面 中还有 preload页面,是否会继续加载下去。
比如一个app中有20个页面都是有preload,那是不是进入第一个页面就会preload剩下的所有20个页面?
2。比如M页面中 preload N页面,但N页面有 2个子页面。
那么在M preload N的时候,是否会一起 preload N的子页面?
不会同时预加载,
A->B->C->D->E
A显示,则预加载B,B显示则预加载C,以此类推
目前仅init中的preloadPages配置项是以上述逻辑执行,其他方式预加载不支持。
szaos (作者)
谢谢,继续追问。
预加载的页面 B 有如下js
(function($, doc) {
$.plusReady(function() {
// 获取传值
alert(1)
})
}(mui, document));
这样A->B 在A中预加载 B 的时候就会 alert1,
那么我在 alert这个位置 preload C,是不是也就 预加载C了。这个预加载C应该写在哪里?
有没有 类似 B页面 onShow的 回掉函数?
2016-02-05 17:40
@DCloud_MUI_FXY:
我做了一个测试程序,结果跟你所说不太一样。
我测试的结果是:A 作为启动页,通过 preloadPages 指定的 B 被创建了,C 的确没有被创建,但问题是,当 B.show() 之后,C 仍然没有被创建。当第二次点击 show 按钮的时候,程序报错了,没有找到指定的 webview。
是我的用法有什么不对的地方吗?
测试代码 preload-index.html 如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<script src="js/mui.js"></script>
<script type="text/javascript">
var preload_id = 'v_' + Date.now() + '_' + Math.floor(Math.random() * 10000);
console.log('preload_id: ' + preload_id);
mui.init({
preloadPages:[{
url: 'preload-index.html',
id: preload_id
}]
});
mui.plusReady(function() {
mui('#btn-show')[0].addEventListener('tap', function() {
console.log('show: ' + preload_id);
var v = plus.webview.getWebviewById(preload_id);
v.show();
});
document.title = plus.webview.currentWebview().id;
mui('#my-id')[0].innerText = plus.webview.currentWebview().id;
mui('#preload-id')[0].innerText = preload_id;
});
</script>
</head>
<body>
<button id="btn-show">show</button>
<div>
me: <span id="my-id">-</span>
</div>
<div>
preload: <span id="preload-id">-</span>
</div>
水逸 -
太乱了 ,其实很简单 预加载:就是页面显示与隐藏
流程就是创建一个页面,让其隐藏起来,你让他显示的时候 你再让他显示,只不过mui.openwindown只是打开显示页面的一种方式,当然里面包括官网所认为的仿原生的动画。
ps:
为什么几年了,一直不解决最关键问题:1.滚动条滑动的速度、2.打开页面的动画控制。
敢问能否做好200毫秒内 前100毫秒打开页面的百分比 后100毫秒打开页面的百分比
szaos (作者)
是的,we need onshow
2016-05-12 17:40