在Joomla中只包含一次javascript文件

在Joomla中只包含一次javascript文件,javascript,jquery,joomla,Javascript,Jquery,Joomla,现在,这个问题已经被成功地问了很多次了,但我尝试的事情都没有成功 我尝试了head.js和require.js库 我也尝试过 if(!window.unique_name){ 唯一_name=true; //代码在这里。。 } 所有这些我都无法使用(全局变量始终未定义) 我试图包含的脚本运行如下: //clock.js clockyTick=函数(){ //我的代码在这里 } 设置间隔(时钟频率,1000); 调用此脚本的独立应用程序工作正常。 只有当两个应用程序都包含在同一页面上时(通过调

现在,这个问题已经被成功地问了很多次了,但我尝试的事情都没有成功

我尝试了
head.js
require.js

我也尝试过
if(!window.unique_name){
唯一_name=true;
//代码在这里。。
}
所有这些我都无法使用(全局变量始终未定义)
我试图包含的脚本运行如下:
//clock.js
clockyTick=函数(){
//我的代码在这里
}
设置间隔(时钟频率,1000);
调用此脚本的独立应用程序工作正常。
只有当两个应用程序都包含在同一页面上时(通过调用PHP
require()
),它们才会中断

以下是问题的原因(我认为):
我正在(Joomla)网站上构建自定义web应用程序,需要在同一页面上显示我的两个应用程序。
两个应用程序都需要相同的.js文件才能正确运行,这在它们独立运行时可以正常工作,但一旦两个应用程序在同一页面(在“管理”部分)上运行,脚本就会发生冲突并停止彼此的工作
(所讨论的脚本是一个动态时钟脚本,它获取div的专门内容并将其修改为其他内容)

我认为我无法让上述库正常工作的原因是,它们在管理页面上也被包含了两次

有没有办法解决这个问题,或者我必须咬紧牙关,将一个库集成到主Joomla模板中?(这意味着该库在每一页上都被无用地加载,但仅在数百页中的3页上使用)

jQuery在每个应用程序上都是单独需要的。但谢天谢地,我能够使用noConflict来避免出现问题(不理想)

joomla的方法是在加载模块脚本之前,实例化模块内的文档,并仅取消设置此问题中描述的冲突脚本:

1) 获取一个实例,如果该文档是对象并删除js文件(您 可以在插件中执行此操作):


这里有一个如果您与PHP
require()
发生冲突,您可以尝试
require\u once()
。然而,正如前面提到的,这不是Joomla做事的方式

谢谢你对joomla的具体回答,我会试一试的。至于您建议的“脏”解决方案,我提到我确实尝试过,但出于任何原因,
窗口.globalvar
没有设置。我可以补充一点,我在加载两次时遇到问题的脚本是我自己的,而不是Joomla脚本,因此,只有在页面中包含了
PHP require()之后,它才会出现在页面上代码片段更新:仍然不知道是什么或如何更新,但在尝试了所有操作后,包括使用
PHP echo()
,并在加载脚本的每个页面上检查和设置全局PHP变量标志。。。我最后一次尝试了“肮脏”的方法,现在它起作用了!!!于是接受了你的回答:)谢谢你的努力@罗兹:太好了!为便于将来参考,js和css文件应如图所示包含在内,以便您可以如上所述取消设置它们。多亏了这个额外的snippit,这可能是我所缺少的。自从这个问题提出以来,我已经走了很长一段路&几乎放弃了“joomla方法”
require\u once
对于防止意外的东西重叠非常有用,但对我来说根本没有帮助——对代码布局的重新思考解决了所有问题。
<?php 
         //get the array containing all the script declarations
         $document = JFactory::getDocument(); 
         $headData = $document->getHeadData();
         $scripts = $headData['scripts'];

         //remove your script, i.e. mootools
         unset($scripts['/media/system/js/mootools-core.js']);
         unset($scripts['/media/system/js/mootools-more.js']);
         $headData['scripts'] = $scripts;
         $document->setHeadData($headData);
?>
//1st module script

var unique_name;

if (unique_name == false || unique_name == null) { 
    unique_name = true; 
    //code here.. 
    alert("Included 1st script");
}else{
    //do nothing
    alert("Not included 1st script")
}

//2nd module script

var unique_name;

if (unique_name == false || unique_name == null) { 
    unique_name = true; 
    //code here.. 
    alert("Included 2nd script");
}else{
    //do nothing
    alert("Not included 2nd script")
}