Bonjour,

Ma question est dans le sujet: insérer du code js dans une page HTML (ou dans une page externe), ça ne pose aucun problème. J'aimerais savoir si il est possible de faire l'inverse?

Et si oui, quelles sont les règles de programmation à respecter? Et si c'est bien ou mal au niveau de la sécurité?

Merci pour vos réponses Smiley smile
oui il est possible d'insérer de l'html dans du js mais uniquement comme notion texte et pas comme notion de travail. mais le rendu finale sera forcément de l'html.

il serait peut être bon d'expliquer un peut plus ce que tu souhaites faire .
Merci de ta réponse. Explique moi ce que tu entends par "notion de texte" et "notion de travail".

je vais essayer d'expliquer un peu plus tard, pas le temps maintenant.

merci encore...
Bonjour,

je reviens avec un peu plus d'explications quand à ma question.

Je dois réaliser un menu déroulant sur le site d'un de mes clients (fonctionnant sur Joomla 1.5). Le menu (type suckerfish) doit être de ce type au niveau de l'iconographie:
upload/40072-menu.jpg

Parenthèses et astérisque roses sur menu actif et bleues sur inactif.

Ma problématique est que l'espacement entre les deux parenthèses doit être en fonction de la longueur du mot et non pas fixe. Il faut donc que j'insère dans mon menu une parenthèse à gauche et une parenthèse + l'astérisque à droite de l'entrée de menu. Ce qui élimine d'entrée une seule et même image en background. Pour cela, il faut que j'apporte des modifications au fichier superfish.js, d'où ma question.

Je ne sais pas si j'ai été suffisamment clair dans mes explications Smiley murf

Au cas où, voici le fichier en question:


/*
 * Superfish v1.4.8 - $ menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	 http://www.opensource.org/licenses/mit-license.php
 
 * 	 http://www.gnu.org/licenses/gpl.html
 
 *
 * CHANGELOG:  http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 
 */

;(function($){
	initialized = false;
	$.fn.superfish = function(op){
		if(initialized) return;
		initialized = true;
		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
			over = function(){
				var superfish = $(this), menu = getMenu(superfish);
				clearTimeout(menu.sfTimer);
				superfish.showSuperfishUl().siblings().hideSuperfishUl();
			},
			out = function(){
				var superfish = $(this), menu = getMenu(superfish), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray(superfish[0],o.$path)>-1);
					superfish.hideSuperfishUl();
					if (o.$path.length && superfish.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
				},o.delay);	
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
			
		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(ul)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;
			
			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();
			
			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);
			
		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 800,
		animation	: {opacity:'show'},
		speed		: 'normal',
		autoArrows	: true,
		dropShadows : true,
		disableHI	: false,		// true disables hoverIntent detection
		onInit		: function(){}, // callback functions
		onBeforeShow: function(){},
		onShow		: function(){},
		onHide		: function(){}
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>ul').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>ul:hidden').css('visibility','visible');
			sf.IE7fix.call($ul);
			o.onBeforeShow.call($ul);
			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
			return this;
		}
	});

})(jQuery);



En tous les cas, merci de votre aide... Smiley cligne