我有一个javascript文件,可以处理几个HTML文件的脚本。
我开始遇到问题,因为所有内容都已写出来,并且函数中没有调用任何内容(因此所有AJAX调用都会在所有页面调用,即使每个调用只应在一个页面调用)。
改善/解决此问题的最佳方法是什么?以下是我想到的两种方式:
我倾向于将所有代码放入函数中。但是,当我这样做时:
<script src="the_source">
call_function
</script>
这似乎不起作用。我把它放在负责任的HTML之前。我最初在Haml写的如下:
%script{:src => "src"}
call_function
如何让这个HTML函数调用工作?
或者将它们分开,即每个HTML文件都有一个不同的JS文件被认为是更好的解决方案?问题是它们之间有很多共享代码。为了解决这个问题,我可以使用对象中的共享代码创建一个不同的文件,可以根据需要从其他JS文件中调用。
这个问题的清洁方法/解决方案是什么?
答案 0 :(得分:1)
调用函数使用:
call_function();
编辑:
<script src="the_source"></script>
<script >
call_function();
</script>
其中“the_source
”是您的js文件的路径
结束编辑
要分离每个页面中的逻辑,我只想创建一些设置对象,并为你想要分开的案例添加标志:
//this code should be on every page you need your javascript file
<script src="the_source"></script>
<script>
var settings = {
mode:'doSomething1'
}
call_function(settings);
</script>
你的js文件中的根据settings.mode值做事:
function call_function(settings)
{
switch(settings.mode){
case: 'doSomething1':
//code for case1
break;
case: 'doSomething2':
//code for case2
break;
default:
//code for default case
break;
}
}
答案 1 :(得分:1)
这取决于您的托管计划:
如果它是专用或半专用服务器,我宁愿拥有共享的JavaScript文件(用于提高性能)。
如果它是任何其他类型,则单独的文件更快,因为它在不同的JS文件中分配请求的负载。
如果您不想创建分离的文件,因为它会很混乱,我建议您执行以下操作:
<script src="somewhere">
var page = "<?PHP echo basename($_SERVER['PHP_SELF']); ?>";
Run_Function();
</script>
在某个地方:
function Run_function(){
switch(page){
case "1.php":
//Do Something
break;
case "2.php":
//Do Something else
break;
default:
alert("Unregistered webpage");
break;
}
祝你好运:D
编辑:
尝试此功能以从URL获取文件名:
function FileName(){
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
return filename:
}
更新:
请检查以上改进的功能:
function FileName(){
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
if(filename == "" || filename == "Undefined"){
filename = "index.ruby";//or any other extension
}else{
var filename = filename.replace(/%C3%84/g, "Ä");
var filename = filename2.replace(/%C3%96/g, "Ö");
var filename = filename2.replace(/%C3%9C/g, "Ü");
var filename = filename2.replace(/%C3%A4/g, "ä");
var filename = filename2.replace(/%C3%B6/g, "ö");
var filename = filename2.replace(/%C3%BC/g, "ü");
}
return filename:
}
此功能可以帮助更多人,并且使用起来更灵活。
答案 2 :(得分:0)
我会将您的JS代码放入几个不同的文件中,每个页面一个。 这可以帮助您的网站更快地运行(诚然不是很多),因为浏览器没有运行大量的代码来查找所需的功能。 此外,(这只是一个个人意见),一个只有很多短函数列表的JS文件非常难看,效率也不高。
是的,包含一个包含共享代码的额外文件。尽量确保文件中不必要的重复! 祝好运! :)