您的当前位置:首页正文

预加载css或javascript的js代码_javascript技巧

2023-12-02 来源:布克知识网

预加载文件一般有两种常用的方式:xhr和动态插入节点的方式。动态插入节点是最为简单也最为广泛的一种异步加载方式(例如yui的Get模块),然后使用动态插入节点方法加载的文件都会在加载后立即执行,javascript的执行一方面会占用浏览器js执行进程,另一方面也可能改变页面结构,而css的执行更有可能让整个页面变化。xhr方式虽然不会执行脚本,但是由于同域的限制,且如今网站的静态文件都是部署在cdn服务器上,如何预加载css js文件也变有点玄妙了。 Stoyan Stefanov 撰文简明的阐述了一种加载文件而不会让之执行的方法。原文可见 http://www.phpied.com/preload-cssjavascript-without-execution/ 具体的方法是,ie中使用 new Image().src 去预加载文件,而其他浏览器使用动态插入的 标签来完成加载。 部分代码如下 代码如下: window.onload = function () { var i = 0, max = 0, o = null, // list of stuff to preload preload = [ 'http://tools.w3clubs.com/pagr2/.sleep.expires.png', 'http://tools.w3clubs.com/pagr2/.sleep.expires.js', 'http://tools.w3clubs.com/pagr2/.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); } }; demo 可见 http://phpied.com/files/object-prefetch/page1.php?id=1 几点说明: 1. new Image().src 之所以不能在ff中使用是因为ff对图片实现了一套单独的缓存。 同时safari和chrome看起来也没有被缓存。 2. 动态插入的 object 标签需要插入到非 head部分,以触发加载。 3. ie7 ie8 也可以通过一些代码使用动态object加载文件(代码注释中有提到)。但是作者发现object 通常会消耗很大, so... 通过自身的实验发现相当不错的,有需求的同学不妨一试。

小编还为您整理了以下内容,可能对您也有帮助:

javascript怎样实现预加载js、css、图片呢?求高手,求demo

预加载一张img,

var tempImg=document.createElement("img");

tempImg.src="...";//url地址

..//

..//

在合适的时候插入到dom中去 或者直接在合适的位置写<img src=".."/>因为已经下载过了,会直接拿缓存,不会重新请求下载

如何在页面中异步加载css/js,写出对应的loadcss,loadjs function

jquery动态加载css,js文件方法

方法1:
代码如下

复制代码代码如下:

$.getscript("test.js");

方法2:
代码如下

复制代码代码如下:

function loadjs(file){

var head = $('head').remove('#loadscript');
$("<scri"+"pt>"+"</scr"+"ipt>").attr({src:file,type:'text/javascript',id:'load'}).appendto(head);
}

方法3:
代码如下

复制代码代码如下:

$("<scri"+"pt>"+"</scr"+"ipt>").attr({src:file,type:'text/javascript',id:'load'}).appendto($('head').remove('#loadscript'));

下面附一些js动态加载js,css文件的方法。
以下代码是摘自news.qq.com页面里的代码的,本人未进行测试,程序看着应该没有问题的,可以做为参考的,主要用来在网页底部位置,实现动态加载js文件到网页<head>标签的后面,通过DOM来实现的,代码如下:
代码如下

复制代码代码如下:

<script>
var SCRIPT_TIMEOUT = 20000;
var QVPL_PATH = "/QVPL1.0.0.js";

function loadHelper (jsurl) {
var oScriptEl, oTimeoutHDL, oHead;
oScriptEl = document.createElement("script");
oScriptEl.type = "text/javascript";
oScriptEl.language = "javascript";
oScriptEl.src = jsurl;
oScriptEl.onreadystatechange = doCallback;
oScriptEl.onload = function()
{
this.readyState = "complete";
doCallback();
if(typeof(lianbo) == "object"){
lianbo.init(window.QVPL);
}
};
oTimeoutHDL = window.setTimeout(doError,SCRIPT_TIMEOUT);
document.getElementsByTagName("head")[0].appendChild(oScriptEl);
function doCallback()
{
if (oScriptEl.readyState == "complete" || oScriptEl.readyState == "loaded")
{
oScriptEl.onload = oScriptEl.onreadystatechange = new Function();
window.clearTimeout(oTimeoutHDL);
}
};
function doError()
{
oScriptEl.parentNode.removeChild(oScriptEl);
};
}
loadHelper(QVPL_PATH);
</script>

如何在页面中异步加载css/js,写出对应的loadcss,loadjs function

jquery动态加载css,js文件方法

方法1:
代码如下

复制代码代码如下:

$.getscript("test.js");

方法2:
代码如下

复制代码代码如下:

function loadjs(file){

var head = $('head').remove('#loadscript');
$("<scri"+"pt>"+"</scr"+"ipt>").attr({src:file,type:'text/javascript',id:'load'}).appendto(head);
}

方法3:
代码如下

复制代码代码如下:

$("<scri"+"pt>"+"</scr"+"ipt>").attr({src:file,type:'text/javascript',id:'load'}).appendto($('head').remove('#loadscript'));

下面附一些js动态加载js,css文件的方法。
以下代码是摘自news.qq.com页面里的代码的,本人未进行测试,程序看着应该没有问题的,可以做为参考的,主要用来在网页底部位置,实现动态加载js文件到网页<head>标签的后面,通过DOM来实现的,代码如下:
代码如下

复制代码代码如下:

<script>
var SCRIPT_TIMEOUT = 20000;
var QVPL_PATH = "/QVPL1.0.0.js";

function loadHelper (jsurl) {
var oScriptEl, oTimeoutHDL, oHead;
oScriptEl = document.createElement("script");
oScriptEl.type = "text/javascript";
oScriptEl.language = "javascript";
oScriptEl.src = jsurl;
oScriptEl.onreadystatechange = doCallback;
oScriptEl.onload = function()
{
this.readyState = "complete";
doCallback();
if(typeof(lianbo) == "object"){
lianbo.init(window.QVPL);
}
};
oTimeoutHDL = window.setTimeout(doError,SCRIPT_TIMEOUT);
document.getElementsByTagName("head")[0].appendChild(oScriptEl);
function doCallback()
{
if (oScriptEl.readyState == "complete" || oScriptEl.readyState == "loaded")
{
oScriptEl.onload = oScriptEl.onreadystatechange = new Function();
window.clearTimeout(oTimeoutHDL);
}
};
function doError()
{
oScriptEl.parentNode.removeChild(oScriptEl);
};
}
loadHelper(QVPL_PATH);
</script>

用js文件怎么引入其他js文件和css文件

方法一,在调用文件的顶部加入下例代码:document.write(”<script language=javascript src=’/js/import.js’></script>”);

(注:有时你引用的文件还可能需要引用其他的js,我们需要将需要的那个js文件也以同样的方法引用进来)

方法二,通过中间界面对js进行应用

就是我们可以在某个html中引用了你需要的js文件,我们可以通过拿到那个html文件的对象,然后在通过这个对象去引用js的方法。

(一般不常用)

方法三:在将下边代码放入Body中:new_element=document.createElement(”script”);

new_element.setAttribute(”type”,”text/javascript”);

new_element.setAttribute(”src”,”import.js”);

document.body.appendChild(new_element);

我们来分析一下关键的几句代码:

首先,我们利用document.createElement(”script”)生成了一个script的标签,设置其 type属性为text/javascript,src为import.js(这里的1.js同2.js放在同一个目录,也可放在不同的目录)。最后将这个标签动态 地加入body中。如此一来,我们就可以调用到不同js文件中的方法了。

注意:<script language=”JAVASCRIPT” src=’1.js’></script>一定要放在body下面。

因为在2.js中用到了body(document.body.appendChild(new_element);)

如果将引如2.js的代码放在body上面,也就是说,

进入页面后,还没有生成body就已经执行b.js里的document.body.appendChild(new_element);了。

这时body不存在就会抛JavaScript错误。

如何实现 css 文件的异步加载?

您可以使用以下方法之一来实现 CSS 文件的异步加载:

1. 在 link 标签中使用 media="none" 和 onload 属性来异步加载 CSS 文件。这样浏览器将会异步加载这个 CSS 文件,在加载完毕之后,使用 onload 属性将 link 的媒体类型设置为 all ,然后便开始渲染。

2. 使用 JavaScript 动态添加 style 标签和使用 rel="preload" 预加载 CSS。

3. 使用 async 属性来异步加载 CSS 文件。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

  • 湖上寓居杂咏·格下轩窗枕水开朝代

    《湖上寓居杂咏·格下轩窗枕水开》姜夔朝代:宋代。《湖上寓居杂咏·格下轩窗枕水开》年代:宋代。作者:姜夔。字号:字尧章号白石道人。民族族群:汉人。出生地:饶州鄱阳。出生时间:1154年。去世时间:1221年。主要作品:《八归湘中送胡德华》《翠楼吟》《淡黄柳》《点绛唇丁未冬过吴松作》《法曲献仙音》等。主要成就:诗词文章,书法音乐无不精善。我们为您从以下几个方面提供湖上寓居杂咏·格下轩窗枕水开的详细介绍。一、《湖上寓居杂咏·格下轩窗枕水开》的全文 点此查看《湖上寓居杂咏·格下轩窗枕水开》的详细内容。格下轩窗枕水开,画船忽载故人来。与君同过西城路,却指烟婆独自回。二、《湖上寓居杂咏·格下轩窗枕水开》姜夔其他诗词《玉梅令》、《疏影》、《点绛唇丁未冬过吴松作》、《鹧鸪天元夕有所梦》、《琵琶仙》。

  • 湖上寓居杂咏·格下轩窗枕水开的作者 湖上寓居杂咏·格下轩窗枕水开的作者是什么]

    《湖上寓居杂咏·格下轩窗枕水开》姜夔作者:姜夔。《湖上寓居杂咏·格下轩窗枕水开》作者:姜夔。年代:宋代。字号:字尧章号白石道人。民族族群:汉人。出生地:饶州鄱阳。出生时间:1154年。去世时间:1221年。主要作品:《八归湘中送胡德华》《翠楼吟》《淡黄柳》《点绛唇丁未冬过吴松作》《法曲献仙音》等。主要成就:诗词文章,书法音乐无不精善。我们为您从以下几个方面提供湖上寓居杂咏·格下轩窗枕水开的详细介绍。一、《湖上寓居杂咏·格下轩窗枕水开》的全文 点此查看《湖上寓居杂咏·格下轩窗枕水开》的详细内容。格下轩窗枕水开,画船忽载故人来。与君同过西城路,却指烟婆独自回。二、《湖上寓居杂咏·格下轩窗枕水开》姜夔其他诗词《玉梅令》、《疏影》、《点绛唇丁未冬过吴松作》、《鹧鸪天元夕有所梦》、《琵琶仙》。

  • 湖上寓居杂咏·格下轩窗枕水开的作者是什么

    《湖上寓居杂咏·格下轩窗枕水开》姜夔作者:姜夔。《湖上寓居杂咏·格下轩窗枕水开》作者:姜夔。年代:宋代。字号:字尧章号白石道人。民族族群:汉人。出生地:饶州鄱阳。出生时间:1154年。去世时间:1221年。主要作品:《八归湘中送胡德华》《翠楼吟》《淡黄柳》《点绛唇丁未冬过吴松作》《法曲献仙音》等。主要成就:诗词文章,书法音乐无不精善。我们为您从以下几个方面提供湖上寓居杂咏·格下轩窗枕水开的详细介绍。一、《湖上寓居杂咏·格下轩窗枕水开》的全文 点此查看《湖上寓居杂咏·格下轩窗枕水开》的详细内容。格下轩窗枕水开,画船忽载故人来。与君同过西城路,却指烟婆独自回。二、《湖上寓居杂咏·格下轩窗枕水开》姜夔其他诗词《玉梅令》、《疏影》、《点绛唇丁未冬过吴松作》、《鹧鸪天元夕有所梦》、《琵琶仙》。

  • 湖上寓居杂咏·格下轩窗枕水开的作者

    《湖上寓居杂咏·格下轩窗枕水开》姜夔作者:姜夔。《湖上寓居杂咏·格下轩窗枕水开》作者:姜夔。年代:宋代。字号:字尧章号白石道人。民族族群:汉人。出生地:饶州鄱阳。出生时间:1154年。去世时间:1221年。主要作品:《八归湘中送胡德华》《翠楼吟》《淡黄柳》《点绛唇丁未冬过吴松作》《法曲献仙音》等。主要成就:诗词文章,书法音乐无不精善。我们为您从以下几个方面提供湖上寓居杂咏·格下轩窗枕水开的详细介绍。一、《湖上寓居杂咏·格下轩窗枕水开》的全文 点此查看《湖上寓居杂咏·格下轩窗枕水开》的详细内容。格下轩窗枕水开,画船忽载故人来。与君同过西城路,却指烟婆独自回。二、《湖上寓居杂咏·格下轩窗枕水开》姜夔其他诗词《玉梅令》、《疏影》、《点绛唇丁未冬过吴松作》、《鹧鸪天元夕有所梦》、《琵琶仙》。

  • 湖上寓居杂咏·格下轩窗枕水开作者

    《湖上寓居杂咏·格下轩窗枕水开》姜夔作者:姜夔。《湖上寓居杂咏·格下轩窗枕水开》作者:姜夔。年代:宋代。字号:字尧章号白石道人。民族族群:汉人。出生地:饶州鄱阳。出生时间:1154年。去世时间:1221年。主要作品:《八归湘中送胡德华》《翠楼吟》《淡黄柳》《点绛唇丁未冬过吴松作》《法曲献仙音》等。主要成就:诗词文章,书法音乐无不精善。我们为您从以下几个方面提供湖上寓居杂咏·格下轩窗枕水开的详细介绍。一、《湖上寓居杂咏·格下轩窗枕水开》的全文 点此查看《湖上寓居杂咏·格下轩窗枕水开》的详细内容。格下轩窗枕水开,画船忽载故人来。与君同过西城路,却指烟婆独自回。二、《湖上寓居杂咏·格下轩窗枕水开》姜夔其他诗词《玉梅令》、《疏影》、《点绛唇丁未冬过吴松作》、《鹧鸪天元夕有所梦》、《琵琶仙》。

Top