问一个javascript原理性的问题,如何避免装入相同的javascript src?

wildlily980 2011-04-22 12:27:45
事情是这样子的:
有许多类似页面,都有一个<script src='1.js'>.
他们单独显示都没有问题.
可是首页上,是许多单独的页组合起来的,就是wordpress.
这种情况下如何避免重复装入同一个js 文件?
类似于php的require_once.
...全文
99 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsilence 2011-04-22
  • 打赏
  • 举报
回复
当然最完美的做法是首页也用这个函数,函数内部维护一个数组来判断,但是既然做不到,我就折中了下。在判断的时候用lastIndexOf。当然如果你有更好的做法。欢迎提出。。
rainsilence 2011-04-22
  • 打赏
  • 举报
回复
我的不用改首页啊。
toury 2011-04-22
  • 打赏
  • 举报
回复
5,6楼:

你我的思路不同。

我的方法是让所有的1.JS全部加载,然后只需要在首页的window.onload()里保留一个1.JS,其余删除。这样做的好处是只改首页一个页面;

你的那个需要改动首页以及它所有的包含的页面,不划算!
wildlily980 2011-04-22
  • 打赏
  • 举报
回复
谢谢您的时间,会试一下.
rainsilence 2011-04-22
  • 打赏
  • 举报
回复
function requireOnce(scriptPath) {

var scripts = document.getElementsByTagName("script");

for (var index = 0; index < scripts.length; index++) {

if (scripts[index].src.lastIndexOf(scriptPath) != -1) {
return;
}
}
var scriptTag = document.createElement("script");
scriptTag.type = "text/javascript";
scriptTag.src = scriptPath;
var headTag = document.getElementsByTagName("head")[0];
headTag.appendChild(scriptTag);
}

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
requireOnce("js/glUtils.js");
requireOnce("js/glUtils.js");
requireOnce("js/glUtils.js");
requireOnce("js/glUtils.js");
</script>
</head>
<body>

</body>
</html>


试试看
rainsilence 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 toury 的回复:]

这事情放到首页的onload()里做:
window.onload=function(){
var b=false
var a=document.getElementsByTagName('SCRIPT')
for(var i=0;i<a.length;i++){
if(!b){
b=(a[i].src&&a[i].src=='1.as……
[/Quote]
你这个不对吧。如果是removeChild,说明已经在页面上了。
wildlily980 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mymoondance 的回复:]
在js第一行写上 document.write('<script type="text/javascript" src="1.js">');
[/Quote]
这个原理何在?
真的管用?
wildlily980 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 toury 的回复:]
这事情放到首页的onload()里做:
window.onload=function(){
var b=false
var a=document.getElementsByTagName('SCRIPT')
for(var i=0;i<a.length;i++){
if(!b){
b=(a[i].src&&a[i].src=='1.asp')?tru……
[/Quote]
谢啊,只能改单页.不能改首页,不过如果实在没有办法,会尝试着去改一下.因为wordpress的首页难改.对于我来说.
mymoondance 2011-04-22
  • 打赏
  • 举报
回复
在js第一行写上 document.write('<script type="text/javascript" src="1.js">');
toury 2011-04-22
  • 打赏
  • 举报
回复
这事情放到首页的onload()里做:
window.onload=function(){
var b=false
var a=document.getElementsByTagName('SCRIPT')
for(var i=0;i<a.length;i++){
if(!b){
b=(a[i].src&&a[i].src=='1.asp')?true:false;
}
else{
if(a[i].src&&a[i].src=='1.asp'){
a[i].parent.removeChild(a[i])
}
}
}
}
xqr1984 2011-04-22
  • 打赏
  • 举报
回复
的确很丰富我的知识。应用到现在的工程中去。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧