① js如何實現圖片分段載入
你可以寫一個函數,來判斷當前顯示到了哪個區域,然後顯示本區域的圖片.這個其實你都不用自己去做了,使用JSON自己就帶有這樣的功能,應用和更改起來都比較方便,相率也非常優秀。
② 怎麼讓sea.js自身非同步載入
為了極限性能,也為了做一些封裝,我需要對seajs自身進行非同步載入,通過以下代碼載入seajs發現config與use都未執行。
<script>
// 其他代碼
// sea.js 的非同步載入代碼:
;(function(m, o, d, u, l, a, r) {
if(m[o]) return
function f(n) { return function() { r.push(n, arguments); return a } }
m[o] = a = { args: (r = []), config: f(1), use: f(2), on: f(3) }
m.define = f(0)
u = d.createElement("script")
u.id = o + "node"
u.async = true
u.src = "path/to/sea.js"
l = d.getElementsByTagName("head")[0]
l.appendChild(u)
})(window, "seajs", document);
// 立刻就可以調用 seajs 的方法了:
seajs.config({
alias: {
'jquery': 'path/to/jquery-1.9.1.min.js'
}
});
seajs.use('./main', function(main) {
// do some cool things.
});
</script>
然後在網上查了以下,發現玉伯去除 sea.js 自身的非同步載入內置支持,
https://github.com/seajs/seajs/issues/733
木有辦法,只能自己改一改了,我當前使用的版本是2.1.1,為了兼容以後新的版本就不動他的源代碼,只在sea.js 底部加上一段:
G = this;
var k = G.PagurianObjectName;
var Pagurian = function(a) {
this.push = function(a) {
if (a[0] === 'config') {
seajs[a[0]](a[1]);
}
if (a[0] === "use") {
seajs[a[0]](a[1], a[2]);
}
}
if (a && a.length) {
for (var b = 0; b < a.length; b++) this.push(a[b])
}
};
G[k] = new Pagurian(G[k].q);
然後在用的時候,這樣用:
(function(i, d, o, u, p) {
if (i[u]) return;
i['PagurianObjectName'] = p;
i[p] = i[p] || function() {
return (i[p].q = i[p].q || []).push(arguments)
};
s = d.createElement(o);
s.src = "src/core/sea.ext.js";
s.charset = "utf-8";
s.async = true;
s.id = u + "node";
f = d.getElementsByTagName(o)[0];
f.parentNode.insertBefore(s, f);
})(window, document, 'script', "seajs", "pagurian");
pagurian("config", {
base:"src",
alias: {
"jquery": "plugins/jquery/1.11.1/jquery.js"
},
preload: ["jquery"],
charset: 'utf-8',
timeout: 20000,
debug: false
});
pagurian("use", "presenter/standard/standard.app", function(app) {
app.page.message();
});
③ js怎麼載入另一張圖片src
用javascript , var object= document.getElementById("img1"); object.src="static/picture/1.jpg";
如果你來想讓他在頁面加自載時就執行的話,在<body onload="你的代碼">
或者在其他你想要執行的時候,去觸發這兩條語句。比如點擊,某個控制項或對象獲得焦點等。
④ js怎麼非同步載入loading
js非同步載入loading的方法復如下制:
1、獲取載入的圖片
var image = document.images[0];
2、手動創建一個image對象
var downloadingImage = new Image();
3、調用onload事件載入src真正的鏈接地址
downloadingImage.onload = function(){
image.src = this.src; //src後置指定
};
downloadingImage.src = "目標圖片地址";
⑤ js中,如何等待多個圖片載入完後再執行其他的js代碼。
當然啦,這里抄的onload事件handler是一個非同步函數,注冊了這個事件的handler之後代碼就會繼續執行,而當onload事件觸發之後才會執行它的handler……
這樣多半可以,我給個思路吧
/*前略*/
varisReady=false;/*isReady代表img.onload是否已經被觸發*/
$img[0].onload=function(){
/*這里放上原本在onload的handler中的代碼,這里就不寫出了*/
isReady=true;/*一旦onload事件被觸發就把isReady變為true*/
});
while(!isReady)
{
/*什麼也不做,這個循環在isReady變成true之前都會一直拖著程序不繼續執行*/
}
console.log("steptwo");
/*下略*/