Adapter une fonction... windows.opener et position du curseur

davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 - 7 oct. 2009 à 08:34
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 - 7 oct. 2009 à 16:29
Bonjours,

J'aimerais adapter cette fonction a une fenêtre pop up qui sert à insérer une image dans une div à la position du curseur.

Mon niveau en javascript ne me permet pas d'arriver à mes fins pouvez vous m'aider?

Voila la fonction sert a insérer l'image la ou se trouve le curseur:
function insertAtCursor(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
} else {
myField.value += myValue;
}
}


Voila le déclencheur:
insertAtCursor(window.opener.document.getElementById(target_div).innerHTML, image);

4 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 oct. 2009 à 10:03
Bonjour,

>>Voila la fonction sert a insérer l'image
>>la ou se trouve le curseur:
euh... ça m'étonnerait !
ça insère du texte, pas une image
pour insérer une image, tel que vous
semblez vouloir le faire, il faut se
tourner vers le wysiwyg avec execCommand
sur un
ou un
ou peut-être avec innerHTML+=
ou createElement+appendChild, ou....
pas assez de billes pour dire réellement

Cordialement [mon Site] [M'écrire] Bul
0
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 1
7 oct. 2009 à 13:20
Merci de ces 1er précisons ;)

voila la solution que j'ai retenus:

var target_div = target+'_div';

var contenu_html = window.opener.document.getElementById(target_div).innerHTML

var oldEl (typeof target_div "string" ? window.opener.document.getElementById(target_div) : target_div);
var newEl = oldEl.cloneNode(false);
newEl.innerHTML = contenu_html+image;
oldEl.parentNode.replaceChild(newEl, oldEl)


Au part avant j'ai testé ca, mais ca n'a pas l'aire de marcher sous FF + MAC car ca vide tous le contenus...
window.opener.document.getElementById(target_div).innerHTML = (contenu_html+image);

idem avec ca:
window.opener.document.getElementById(target_div).innerHTML += (image);


Je ne sais pas encore si ma 1er solution marche sous MAC + FF (pas encore testé) mais ca passe sous PC +FF

Par contre je n'ai pas réglé mon problème initial, qui est d'insérer l'image la ou ce trouve le curseur...
Sachant que ma bibliothèque d'image s'ouvre dans un popup (donc: window.opener).

Merci

Az
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 oct. 2009 à 13:32
>>Par contre je n'ai pas réglé mon problème initial,
vous avez probablement lu mon message en diagonale
et si ce n'est pas du wysiwyg que vous
voulez utiliser : trop peu d'infos pour
répondre ( sauf pistes signalées )
0
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 1
7 oct. 2009 à 16:29
Bon j'ai du neuf....

innerhtml semble incompatible avec les MAC bug connue.

Il a fallut que je trouve une alternative que voici:
	eIMG = document.createElement('img');
eIMG.setAttribute("alt",param.f_alt);
eIMG.setAttribute("src",param.f_url);

if(param.f_align=="left"){
eIMG.setStyle({"float" : param.f_align});
}else if(param.f_align=="right"){
eIMG.setStyle({"float" : param.f_align});
}else if(param.f_align!=""){
eIMG.setStyle({"align": param.f_align});
}


if(param.f_width!="")
eIMG.setStyle({"width" : param.f_width+'px'});

if(param.f_height!="")
eIMG.setStyle({"height" : param.f_height+'px'});

if(param.f_padding!="")
eIMG.setStyle({"padding" : param.f_padding+'px'});

if(param.f_margin!="")
eIMG.setStyle({"margin" : param.f_margin+'px'});

if(param.f_border!="")
eIMG.setStyle({"border" : param.f_border+'px'});

if(param.f_borderColor!="")
eIMG.setStyle({"border-color" : param.f_borderColor});

if(param.f_backgroundColor!="")
eIMG.setStyle({"background-color" : param.f_backgroundColor});

var target_div = target+'_div';
var MaDiv = window.opener.document.getElementById(target_div); //récupération de la div
MaDiv.appendChild(eIMG); //Ajout du text proprement dans la div ;)


Alors ca mache plus ou moins

Ca! Ca marche!
	eIMG = document.createElement('img');
eIMG.setAttribute("alt",param.f_alt);
eIMG.setAttribute("src",param.f_url);

if(param.f_align=="left"){
eIMG.setStyle({"float" : param.f_align});
}else if(param.f_align=="right"){
eIMG.setStyle({"float" : param.f_align});
}else if(param.f_align!=""){
eIMG.setStyle({"align": param.f_align});
}


if(param.f_width!="")
eIMG.setStyle({"width" : param.f_width+'px'});

if(param.f_height!="")
eIMG.setStyle({"height" : param.f_height+'px'});

if(param.f_padding!="")
eIMG.setStyle({"padding" : param.f_padding+'px'});

if(param.f_margin!="")
eIMG.setStyle({"margin" : param.f_margin+'px'});

if(param.f_border!="")
eIMG.setStyle({"border" : param.f_border+'px'});

if(param.f_borderColor!="")
eIMG.setStyle({"border-color" : param.f_borderColor});

if(param.f_backgroundColor!="")
eIMG.setStyle({"background-color" : param.f_backgroundColor});

var target_div = target+'_div';
var MaDiv = window.opener.document.getElementById(target_div); //récupération de la div
MaDiv.appendChild(eIMG); //Ajout du text proprement dans la div ;)


En gros debut + fin! Mais dés que je veux rajouter les style avec "setStyle" bah la il n'y a plus personne...

Je suis pas loin de trouver mais si vous avez une idée? D'autant qu'a mon avis c'est pas grand chose...

Az
0
Rejoignez-nous