簡體   English   中英

在Joomla中僅包含一次javascript文件

[英]Include a javascript file only once in Joomla

現在,這個問題已經被問過很多次並成功回答了,但是我嘗試的所有事情都沒有。

我已經嘗試過head.jsrequire.js

我也嘗試過
if (!window.unique_name) { unique_name = true; //code here.. } if (!window.unique_name) { unique_name = true; //code here.. }我都無法工作(全局變量始終未定義)
我嘗試包含的腳本運行如下所示的內容:
//clock.js clockyTick = function() { //my code here } setInterval(clockyTick, 1000); 單獨調用此腳本的應用程序可以正常運行。
僅當兩個應用程序都包含在同一頁面上時(通過對PHP require()調用),它們才會中斷。

這是造成問題的原因(我認為):
我正在(Joomla)網站上構建自定義Web應用程序,並且要求在同一頁面上顯示兩個應用程序。
兩個應用程序都需要相同的.js文件才能正常運行,這兩個應用程序在獨立運行時都可以正常運行,但是一旦兩個應用程序在同一頁面上(在“管理”部分中)運行,腳本就會沖突並導致彼此停止工作
(有問題的腳本是一個動態時鍾腳本,它捕獲div的專用內容並將其修改為其他內容)

我認為無法使上述庫起作用的原因是,它們在管理頁面上也被兩次包含。

什么辦法解決這個問題,還是我必須忍耐一下,將庫集成到Joomla主模板中? (這意味着該庫無用地加載在每個頁面上,但僅在數百個中的三個上使用)
每個應用程序上也分別需要jQuery。但是,值得慶幸的是,我能夠使用noConflict避免在那里出現問題(不理想)

在Joomla的辦法是在這個問題描述實例化模塊和取消只是沖突的腳本文件里面在這里你加載模塊的腳本之前

1)獲取文檔對象的實例並刪除js文件(您可以在插件中執行此操作):

<?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);
?>

或者就您而言,我認為您可以在js文件中嘗試以下骯臟的解決方案:

//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")
}

這是一個演示

如果您與PHP require()有沖突,可以嘗試require_once() 但是,如上所述,這不是Joomla的處理方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM