Jump to content
Sign in to follow this  
MrPierre

Commander le navigateur via les boutons d'une page

Recommended Posts

Salut les javamis :P

Savez-vous s'il est possible de piloter des fonctions du navigateur via du code html ou js (ou autre) ?

Moi par exemple j'aimerais utiliser la fonction "annuler frappe" (ctrl+z) que propose le menu "édition" de la plupart des navigateurs.

Des idées là dessus ?

Edited by MrPierre

Share this post


Link to post
Share on other sites

Salut,

Bonne question...

Javascript ne permet pas d'avoir un gros contrôle sur le navigateur lui-même, ce serait la porte ouverte à de gros problèmes de sécurité.

Pour ton cas précis d'une fonction "annuler", la réponse est oui c'est possible. La preuve : quand tu écris une réponse sur le forum du hub, en haut à droite tu as un petit bouton (flêche demi-tour) qui permet d'annuler une action, et un autre qui permet de la rétablir.

Par contre je ne sais pas comment ça fonctionne au niveau du code. Il y a des pluggins jquery pour des éditeurs Wysiwyg, par exemple : http://elrte.org/ qui propose justement cette fonctionnalité... à creuser de ce côté-là.

Share this post


Link to post
Share on other sites

Salut, j'ai finalement réussi à créer une petite fonction vilainement codée mais qui marche :

Voilà pour les deux petits boutons :) :


<img src=../Icones/previous.png id="back" width=23>
<img src=../Icones/next.png id="forward" width=23><br>

<textarea id=textarea rows=10 cols=7></textarea>


...et la fonction :


// fonction Previous et Next qui emploient le DOM pour emuler un ctrl+z et un ctrl+maj+z

function CancelableTextarea(textarea) {
if (!textarea) {
alert("CancelableTextarea needs a textarea as first paremeter!");
}
var currentlocation = this,
values = this.values = [textarea.value],
valueId = this.valueId = 0;
this.textarea = textarea;
textarea.onkeyup = function() {
if (this.value !== currentlocation.values[currentlocation.valueId]) {
if (this.value === currentlocation.values[currentlocation.valueId - 1]) {
--currentlocation.valueId;
} else if (this.value === currentlocation.values[currentlocation.valueId + 1]) {
++currentlocation.valueId;
} else {
currentlocation.values = currentlocation.values.splice(0, currentlocation.valueId + 1);
currentlocation.values.push(this.value)
currentlocation.next();
}
}
};
}

CancelableTextarea.prototype.previous = function() {
if (this.valueId > 0) {
--this.valueId;
this.textarea.value = this.values[this.valueId];
}
};
CancelableTextarea.prototype.next = function() {
if (this.valueId < this.values.length - 1) {
++this.valueId;
this.textarea.value = this.values[this.valueId];
}
};

// Créé les boutons dynamiquement, leur ajoute une fonction au click et finalement les ajoute au body

var test = new CancelableTextarea(document.getElementById('textarea'));
var back = document.getElementById('back');
var forward= document.getElementById('forward');
back.onclick = function() {
test.previous();
};
forward.onclick = function() {
test.next();
};

Le code est pas top mais ça marche (il reste des variables inutiles, vous ferez le ménage :P

Edited by MrPierre

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...