//JavaScript var req = new XMLHttpRequest(); req.open("GET", "hosts.php", true); req.onreadystatechange = function() { if(req.readyState == 4) { splitImages(req.responseText); } }; req.send(null); function splitImages(imagesString) { var imageData = imagesString.split("\u0001"); var imageElement; for(var i = 0, len = imageData.length; i<len; i++) { imageElement = document.createElement("img"); imageElement.src = "data:image/jpeg;base64," + imageData[i]; document.getElementById("container").appendChild(imageElement); } }
//PHP //读取图片并将他们转换为base64编码的字符串 $images = array("1.jpg", "2.jpg", "3.jpg"); foreach($images as $image) { $image_fh = fopen($image, "r"); $image_data = fread($image_fh, filesize($image)); fclose($image_fh); $playloads[] = base64_encode($image_data); } //把字符串合并成为一个长字符串,然后输出它 $newline = chr(1); //该字符串不会出现在任何base64字符串中 echo implode($newline, $playloads);
如果MXHR响应信息的体积越来越大,有必要通过监听 readyState为3的状态来实现“流”操作。
var url = "/status_tracker.php"; var params = [ "step=2", "time=1248027314" ]; (new Image()).src = url + "?" + params.join("&");
注意,不需要创建img元素或把它插入DOM。
var myArray = new Array(); myArray[0] = "Nicholas"; myArray[1] = 50; myArray[2] = true; myArray[3] = null; var myArray = ["Nicholas", 50, true, null]; //直接量创建速度更快
function addHandler(target, eventType, handler){ if (target.addEventListener){ //DOM2 Events target.addEventListener(eventType, handler, false); } else { //IE target.attachEvent("on" + eventType, handler); } } function removeHandler(target, eventType, handler){ if (target.removeEventListener){ //DOM2 Events target.removeEventListener(eventType, handler, false); } else { //IE target.detachEvent("on" + eventType, handler); } }
function addHandler(target, eventType, handler){ //overwrite the existing function if (target.addEventListener){ //DOM2 Events addHandler = function(target, eventType, handler){ target.addEventListener(eventType, handler, false); }; } else { //IE addHandler = function(target, eventType, handler){ target.attachEvent("on" + eventType, handler); }; } //call the new function addHandler(target, eventType, handler); } function removeHandler(target, eventType, handler){ //overwrite the existing function if (target.removeEventListener){ //DOM2 Events removeHandler = function(target, eventType, handler){ target.addEventListener(eventType, handler, false); }; } else { //IE removeHandler = function(target, eventType, handler){ target.detachEvent("on" + eventType, handler); }; } //call the new function removeHandler(target, eventType, handler); }
var addHandler = document.body.addEventListener ? function(target, eventType, handler){ target.addEventListener(eventType, handler, false); }: function(target, eventType, handler){ target.attachEvent("on" + eventType, handler); }; var removeHandler = document.body.removeEventListener ? function(target, eventType, handler){ target.removeEventListener(eventType, handler, false); }: function(target, eventType, handler){ target.detachEvent("on" + eventType, handler); };
for (var i=0, len=rows.length; i < len; i++){ if (i % 2) { className = "even"; } else { className = "odd"; } //apply class }
但下面按位与版本比上面的版本快乐50%(取决于浏览器)
for (var i=0, len=rows.length; i < len; i++){ if (i & 1) { className = "odd"; } else { className = "even"; } //apply class }