預載入JavaScript/CSS但不執行
先羅列一些預載入JavaScript和CSS的方法(歡迎補充):
1、動態建立節點
2、使用ajax請求
3、使用iframe
4、借用flash去請求資源
5、new Image().src = ‘xxx’;
好吧,一個方案一個方案來分析一下(要求是不允許執行Javascript和應用CSS,以免消耗系統資源):
1、支援跨域,但請求後指令碼會執行、樣式會進行渲染,不符合要求 <排除掉>
2、不支援跨域,在靜態資源部署在CDN上時有些麻煩 <排除掉>
3、這個要載入iframe就比較浪費了,資源下載了也會執行或應用,而且不太好共用(資源還得在頁面寫死了,需要預載入不同的資源還得來幾個頁面或是使用引數的形式,太不靈活了) <排除掉>
4、這個瀏覽器得先支援swf,然後還要考慮放檔案根目錄下放crossdomain.xml檔案,還得與JS進行相互的呼叫(也可能不調,初始化的時候把要請求的資源作為引數傳進去)。
可是可以,感覺有點麻煩,而且得花精力另寫flash,而且還得維護它 <排除掉>
好吧,就只剩下最後一種了,光IE行,其它不行,怎麼辦?
本文的原文是有出處的,可以點選這裡檢視:www.phpied.com/preload-cssjavascript-without-execution/
在非IE中發現動態建立object元素然後附加到body上可以達到與IE中使用new Image()的效果<終於有了一根救命的稻草了>
直接上程式碼了:
window.onload = function () { var i = 0, max = 0, o = null, // list of stuff to preload preload = [ `http://tools.w3clubs.com/pagr2/<?php echo $id; ?>.sleep.expires.png`, `http://tools.w3clubs.com/pagr2/<?php echo $id; ?>.sleep.expires.js`, `http://tools.w3clubs.com/pagr2/<?php echo $id; ?>.sleep.expires.css` ], isIE = navigator.appName.indexOf(`Microsoft`) === 0; for (i = 0, max = preload.length; i < max; i += 1) { if (isIE) { new Image().src = preload[i]; continue; } o = document.createElement(`object`); o.data = preload[i]; // IE stuff, otherwise 0x0 is OK //o.width = 1; //o.height = 1; //o.style.visibility = "hidden"; //o.type = "text/plain"; // IE o.width = 0; o.height = 0; // only FF appends to the head // all others require body document.body.appendChild(o); } };
這個例子的測試頁面,可以點選這裡檢視:http://phpied.com/files/object-prefetch/page1.php?id=1
要檢視new Image().src為何不能在FF達到預期的效果,可以查原文的”Comments”
看來還有更多的”元素”需要我們去挖掘了 ?
相關文章
- 利用CSS、JavaScript及Ajax實現圖片預載入CSSJavaScript
- JavaScript 的效能優化:載入和執行JavaScript優化
- JavaScript的效能優化:載入和執行JavaScript優化
- Javascript在頁面載入時的執行順序JavaScript
- JAVASCRIPT高效能執行和載入(阻塞特性)JavaScript
- javascript圖片懶載入與預載入的分析JavaScript
- Javascript圖片預載入詳解JavaScript
- Javascript的裝載和執行JavaScript
- 前端效能優化:細說JavaScript的載入與執行前端優化JavaScript
- 《高效能JavaScript》讀書筆記①載入和執行JavaScript筆記
- 利用CSS、JavaScript及Ajax實現圖片預載入的三大方法CSSJavaScript
- HTML,javascript,image等載入,DOM解析,js執行生命週期HTMLJavaScriptJS
- javascript圖片預載入詳細介紹JavaScript
- javascript圖片預載入程式碼例項JavaScript
- javascript圖片預載入簡單介紹JavaScript
- JavaScript 的效能優化:程式碼載入和執行模式淺析JavaScript優化模式
- 預載入與智慧預載入(iOS)iOS
- javascript如何動態載入js或者css檔案JavaScriptJSCSS
- 懶載入和預載入
- javascript動態載入css檔案程式碼例項JavaScriptCSS
- 寫個js/css動態載入的JavaScript外掛JSCSSJavaScript
- javascript動態建立並執行css程式碼例項JavaScriptCSS
- JavaScript文件載入完成後再去執行程式碼JavaScript行程
- 超酷的 CSS3 loading 預載入動畫特效CSSS3動畫特效
- 使用 preloadComponents 進行元件預載入元件
- 圖片載入完執行函式函式
- 圖片預載入和懶載入
- Unity熱更學習toLua使用--[1]toLua的匯入和預設載入執行lua指令碼Unity指令碼
- app直播原始碼,css預載入旋轉動畫 與 流光字型APP原始碼CSS動畫
- 使用Prerender.io進行網站預載入網站
- java執行javascriptJavaScript
- Angular2+,路由預載入--預先載入延遲模組Angular路由
- 預載入圖片
- 前端效能優化 --- css和js的裝載與執行前端優化CSSJS
- 前端效能優化 --- 懶載入&預載入前端優化
- JavaScript執行環境與執行棧JavaScript
- 影片直播app原始碼,css預載入旋轉動畫與流光字型APP原始碼CSS動畫
- 直播軟體開發,css預載入旋轉動畫 與 流光字型CSS動畫