11548 sujets

JavaScript, DOM et API Web HTML5

Yup ! Encore moi Smiley smile

C'est tout simple comme question (la réponse peut être moins) :
Est-il possible via JavaScript de vérifier que la cible d'un lien est un fichier ou pas ?

genre alsacreations.com n'est pas un fichier, mais alsacreations.com/fichier.php oui

2eme question en passant :
Peut on vérifier l'appartenance d'une valeur à un tableau ?
Genre

var myArray = new Array();
myArray[0] = 'bla';
myArray[1] = 'blu';

var test = 'bla';
if (test isin myArray) alert('wé il y est !');

Modifié par Olivier (25 Apr 2005 - 22:37)
vérifier à coup sûr que c'est un fichier, ou en extrapolant par le nom ?

pour la deuxième solution, par un découpage de la chaine de caractère du nom du lien, et en analysant l'extention déduire que c'est un site web ou un fichier...

c'est une piste à suivre, pas une solution...

edit: pour la deuxième question, je ne sais pas. jamais entendu parlé, mais ça m'intéresserait, même si j'en doute un peu...
Modifié par Lisarael (25 Apr 2005 - 22:05)
Pour la 2eme question, c'était au pif, et j'ai rien vu à ce sujet mais vu mes piètres capacité niveau moteur de recherche...
Va falloir que je me la coltine à coder ^^

Pour la 1ere question, en fait l'idée c'est l'analyse d'url.
Donc, je récupère l'extension, avec lastIndexOf('.')+1 là, ça roule, j'ai mon extension (il me manquera des tests pour les cibles de liens sans fichier, mais ça on s'en fout un peu là !).

Mais si j'ai alsacreations.com, bah je suis pas content, parceque c'est pas une extension de fichier, mais de nom de domaine.
D'où mon envie de tester si la cible du lien est un fichier.
J'ai pas envie de me coltiner toutes les extensions de nom de domaine ou de nom de fichier, surtout que l'un et l'autre peuvent eventuellement être commun.

Ca n'a pas l'air possible mon truc ?
ouais, ça peut être commun, mais si tu te cibles sur certains noms de fichiers uniquement...

mais c'est pour quelle finalité, en fait ?
La finalité, c'est d'ajouter une icones à la suite d'un lien si la cible du lien... arf, en écrivant ça je me rend compte d'un truc !!

Je suis trop un kéké ^^
J'ai pris le problème à l'envers.

En fait l'idée c'est d'ajouter une icone de fichier à la suite d'un lien si la cible est genre pdf, doc, mov etc...
Moi j'avais fait un tableau pour les extensions à ne pas icono-ifier alors que c'est plus simple de faire pour les fichier à icono-ifier Smiley lol

Sinon, j'ai torché le test d'appartenance à un tableau vite fait, ça doit être bon, ça marche pour mon petit test, mais je suis pas sûr que ça soit infaible.

function isInArray(val, array) {
	for (var a = 0; a < array.length; ++a) {
		if (array[a] != val) continue;
		return true;
	}
}

// a tester comme ça par exemple :
function teste() {
	var bla = new Array();
	bla[0] = 'bla';

	if(isInArray('bla', bla)) alert('ca y est dedans');
}
Olivier a écrit :

2eme question en passant :
Peut on vérifier l'appartenance d'une valeur à un tableau ?
Genre

var myArray = new Array();
myArray[0] = 'bla';
myArray[1] = 'blu';

var test = 'bla';
if (test isin myArray) alert('wé il y est !');


Il n'y a pas de méthode native pour ça, mais on peut très facilement la créer. Exemple pour ajouter une méthode inArray() à chaque tableau:


Array.prototype.inArray = function(value) {
    for( var k = 0, m = this.length; k < m; k++ )
    {
        if( this[k] == value )
        {
            return true;
        }
    }
    
    return false;
};

Modifié par Bobe (25 Apr 2005 - 23:11)
Olivier a écrit :
La finalité, c'est d'ajouter une icones à la suite d'un lien si la cible du lien... arf, en écrivant ça je me rend compte d'un truc !!

Je suis trop un kéké ^^
J'ai pris le problème à l'envers.

En fait l'idée c'est d'ajouter une icone de fichier à la suite d'un lien si la cible est genre pdf, doc, mov etc...
Moi j'avais fait un tableau pour les extensions à ne pas icono-ifier alors que c'est plus simple de faire pour les fichier à icono-ifier Smiley lol


ben voilà...

me disait bien...

dans ce cas, un simple saucissonnage des chaines de nom, analyse des 4 derniers caractères (compte le . au cas où), et pis tu devrais normalement bein t'en tirer...
Bobe a écrit :


Il n'y a pas de méthode native pour ça, mais on peut très facilement la créer. Exemple pour ajouter une méthode inArray() à chaque tableau:


Array.prototype.inArray = function(value) {
    for( var k = 0, m = this.length; k < m; k++ )
    {
        if( this[k] == value )
        {
            return true;
        }
    }
    
    return false;
};


Ca marche pas ma fonction ? Enfin si elle marche, mais c'est pas aussi bien ? mieux ? moins bien ? etc ?

<edit>Euh ps : elle marche aussi la tienne hein !! Je voulais juste savoir la différence, ce qui était le mieux etc.

Par contre, ajouter un break; à la suite de return true; c'est pas mieux ? Ou bien le return est un break; implicite ? => Okay, JSLint m'a donné la réponse Smiley cligne faut pas en mettre !
Modifié par Olivier (26 Apr 2005 - 01:22)
Ahh très bien alors Smiley smile
Finalement, j'ai utilisé ta méthode plutôt que ma fonction, je trouve ça plus "logique" comme syntaxe ici.
De toute façon le résultat est le même Smiley smile
J'ai corrigé un peu ma fonction tout de même en ajoutant le return false; à la fin, pour faire plus propre qu'undefined Smiley lol

Merci à vous les gars !
Bobe a écrit :


Il n'y a pas de méthode native pour ça, mais on peut très facilement la créer. Exemple pour ajouter une méthode inArray() à chaque tableau:


Array.prototype.inArray = function(value) {
    for( var k = 0, m = this.length; k < m; k++ )
    {
        if( this[k] == value )
        {
            return true;
        }
    }
    
    return false;
};


Il suffit de remplacer
for( var k = 0, m = this.length; k < m; k++ )
par
for(k in this)
pour avoir un code qui fonctionne sur des tableaux a indices, mais egalement sur des tableaux associatifs.
Modifié par Cerel (27 Apr 2005 - 15:14)