Comment afficher des iframes dans un navbar dans une content page avec event?

Résolu/Fermé
stephieker_7228 Messages postés 10 Date d'inscription mercredi 12 août 2020 Statut Membre Dernière intervention 1 septembre 2020 - 12 août 2020 à 01:12
stephieker_7228 Messages postés 10 Date d'inscription mercredi 12 août 2020 Statut Membre Dernière intervention 1 septembre 2020 - 12 août 2020 à 08:24
Bonjour,

Bonjour
SVP, quelqu'un peut il m'aider à résoudre ce problème.

J'ai un bouton qui me permet de créer des iframes et de les ajouter dans une liste ordonnée dans un navbar.
Ensuite j'ai une fonction qui me permet de détecter l’événement clic à l’intérieur d'un Iframe et et de créer un autre iframe.

J'aimerai quand je clique sur un iframe dans le navbar qu'il s'affiche dans le content page ainsi je pourrais modifier le contenu de l'iframe

J'ai essayé plusieurs fonction jquery qui me permet d'activer les éléments "ol et li" mais ça ne marche pas avec les iframes,
donc j'ai essayer avec une fonction javascript qui me permet de cliquer ou sélectionner un des iframes du navabar pour l'afficher à droite mais ça ne marche toujours pas.

Svp quelqu'un peut il me partager ses conseils ou de me suggérer une façon plus simple de le réaliser.
Je vous remercie par avance.

Creation des iframes dans le navbar

<button name="Add" onclick="createpage();" class="btn btn-primary"> Add Page</button>  
<div id="loadiframehere">

<script type="text/javascript">
// Fonction create new page
var pagenum = 1;
function createpage(){

var newlink = document.createElement('a');
newlink.setAttribute('class', 'list-group-item list-group-item-action bg-light');
newlink.setAttribute('href', '');

var listex = document.createElement("LI");
var moniframe = document.createElement("IFRAME");
moniframe.setAttribute("src","http://localhost:7007/page" + pagenum + "/");
moniframe.setAttribute("width","150");
moniframe.setAttribute("height","150");
moniframe.setAttribute("id","page" + pagenum + "");

pagenum++;

listex.appendChild(moniframe);
newlink.appendChild(listex);
document.getElementById("loadiframehere").appendChild(newlink);
//alert(pagenum);

}

Evénement clique sur iframe

<code> </script>
<script>
var monitor = setInterval(function(){
var elem = document.activeElement;
if(elem && elem.tagName == 'IFRAME'){
clearInterval(monitor);
alert('clicked!');
var moniframe1 = document.createElement("IFRAME");
moniframe1.setAttribute("width","200");
moniframe1.setAttribute("height","200");

document.getElementById("loadiframe").appendChild(moniframe1);

}
});
</script>
A voir également:

1 réponse

Salut,
euh pourquoi vous n'utilisez pas un écouteur d'événement pour ça?
Voir la méthode "addEventlistener".
Un set Interval sur l'objet window me semble plutôt lourd et ne pas correspondre à ce que vous voulez.
Pas besoin d'une boucle en permanence(ici elle est sur l'objet window) mais juste de repérer le clic.
Vous parlez de JQuery et de JavaScript, mais c'est exactement la même chose ou plutôt JQuery est du JavaScript.

"donc j'ai essayer avec une fonction javascript qui me permet de cliquer ou sélectionner un des iframes du navabar pour l'afficher à droite mais ça ne marche toujours pas. "
Quelques problèmes alors:

1) votre code(le 2nd) ne repère pas le clic mais seulement si l'iframe(n'importe laquelle d'ailleurs) est sélectionnée. Commencez par détecter réellement l'événement.
2)vous ne déplacez rien mais créez une nouvelle iframe vide que vous ajoutez à la div #loadiframe. Donc si vous voulez déplacer quelque chose il faut commencer par l'enlever de la page(removeElement) pour simplement le déplacer ailleurs(destinataire choisit avec appendChild).


La question que je me pose c'est pourquoi utiliser une iframe?
Surtout votre code n'étant pas complet il est difficile de dire quoi que ce soit sans tout voir.
Par exemple vous avez loadiframehere et loadiframe hors un seul existe dans ce que vous montrez.
Commencez par regarder/corriger les erreurs et supprimer le setInterval dont je voit pas l'utilité, en tout cas dans ce que vous décrivez, ça n'a rien à voir avec détecté un clic cela fait une boucle qui exécute un code toutes les x millisecondes. Ça paraît bien compliqué d'ailleurs votre truc, essayer d'oublier le code mais considérer ce que vous voulez faire , ça aide plutôt que de se noyer dans des solutions techniques alambiquées et foireuses...bref aller à l'essentiel du moyen le plus simple et non seulement le plus efficace mais ce qui marche le mieux à tous niveaux(performances, qualité du code et maintenance de celui ci).
0
stephieker_7228 Messages postés 10 Date d'inscription mercredi 12 août 2020 Statut Membre Dernière intervention 1 septembre 2020
Modifié le 12 août 2020 à 08:28


Bonjour, merci pour votre commentaire.

voici une capture d’écran de ce que je suis en train de faire. Si vous voulez que j'ajoute le code complet pas de souci.

J'ai utilisé les iframes c'est pour créer des pages sur mon serveur et pour modifier les pages par la suite.

J’espère qu'avec l'image vous comprendrez plus. Merci
0