J'ai un site Web DotNetNuke et je reçois une erreur «fancybox déjà initialisée».Comment charger fancybox une seule fois dans DotNetNuke (DNN) (JS est déjà inclus dans le thème et les modules)
Je voudrais savoir comment je peux vérifier et inclure le fichier JavaScript une seule fois quand la page se charge? Je sais que le gestionnaire de script ajoutera le fichier JS une seule fois, mais que se passe-t-il si le skin n'utilise pas le gestionnaire de script?
Le thème inclut le fichier JavaScript dans le fichier .ascx de la manière suivante:
<dnn:DnnJsInclude runat="server"
FilePath="js/jquery.fancybox3.min.js" PathNameAlias="SkinPath" />
module Mon DNN personnalisé comprend le même fichier JS en utilisant le gestionnaire de script dans le code-behind:
scriptInclude = new System.Web.UI.HtmlControls.HtmlGenericControl("script");
scriptInclude.Attributes["type"] = "text/javascript";
scriptInclude.Attributes["src"] = this.TemplateSourceDirectory + "/Scripts/jquery.fancybox.min.js";
scriptInclude.ID = ID + "_6";
Page.Header.Controls.Add(scriptInclude);
Je dois ajouter le Fancybox JS à tous mes modules car ils peuvent être installés sur des thèmes avec Fancybox déjà inclus ou non.
J'ai besoin du code Fancybox inclus dans le thème si le module n'est pas placé sur une page particulière.
J'ai pensé à créer un paramètre de portail sur tous mes modules, ce qui vous permettra de désactiver l'inclusion du fichier Fancybox JS lorsqu'il est déjà inclus dans le thème.
J'ai regardé d'autres articles, mais ma question concerne les modules DNN et le thème lui-même.
J'ai essayé d'utiliser ce code dans le thème de ce poste, mais il semble ne pas fonctionner: how to check if fancybox exists on page already
if(typeof $.fancybox == 'function') {
fancy box loaded;
} else {
fancy box not loaded;
}
Le fichier manifeste a échoué car il existe un nom de fichier avec extension.png. J'ai essayé de changer ceci au nom de fichier JS, mais pas de chance. J'ai supprimé la section et cela a fonctionné et installé. Je dois seulement le faire fonctionner dans mon module. Lorsque j'ajoute ce code sous le package de module et lorsque vous sélectionnez le fichier .zip d'installation dans DNN, il affiche: "Manifeste de composant de lecture d'informations - Fichier d'échec JavaScriptFile spécifié dans le fichier dnn est introuvable dans le fichier zip:" J'utilise Le modèle de module Christoc et le fichier JS sont placés dans un dossier nommé Scripts dans le dossier du module. Thx –
Tig7r
Je pense que vous avez juste besoin de changer la ligne scripts/jquery.fancybox.min.js afin qu'il cherche le fichier js à l'endroit approprié dans le zip. –
DotNetNuclear
En outre, je vais supprimer la section de ma réponse. C'était juste pour l'icône d'extension qui est inutile. –
DotNetNuclear