Je cherche à créer un systeme de debugging dans une fenetre à part.
Donc, dans ma webapp, si le debugging est ON, une popup s'ouvre et
affiche les messages de debugging qu'on lui passe.
Donc l'idée est de vérifier si la popup existe
si oui, on lui passe le texte à afficher
si non, on la crée et on lui passe le texte à afficher.
Simple, non?
Mais, est-ce que je DOIS obligatoirement passer une url?
comment faire pour ecrire dans cette popup? newwindow.document.write()
ne va pas!
Alors, finalement je n'ai plus trop changé mon script. Grace à vos conseils, sur papier, il tourne!
En resumé, le probleme etait que lorsque je chargeais un script php, qui faisait l'appel à ma fonction jscript, la popup etait recréée et en plus, les messages de debugging ne restaient pas dans cette popup.
Maintenant ce problème est "réglé"! Miracle de l'informatique ou pur hasard, je ne sais pas. Le fait est que dans mon script principal, j'ai ajouté au onload de ma page, ma fonction de debugging! Resultat des courses, la fenetre reste bien affichée comme prévu mais en plus, les msgs que je lui passe restent également (uniquement valable pour le script en cours).
Voilà ... je compte améliorer ce systeme plus tard. Pour le moment, ça me suffit et passer une journée de plus sur ce problème ne m'enchante pas des masses.
Encore merci à ceux qui m'ont donné un coup de main. Dams
Alors, finalement je n'ai plus trop changé mon script. Grace à vos
conseils, sur papier, il tourne!
En resumé, le probleme etait que lorsque je chargeais un script php, qui
faisait l'appel à ma fonction jscript, la popup etait recréée et en
plus, les messages de debugging ne restaient pas dans cette popup.
Maintenant ce problème est "réglé"! Miracle de l'informatique ou pur
hasard, je ne sais pas.
Le fait est que dans mon script principal, j'ai ajouté au onload de ma
page, ma fonction de debugging!
Resultat des courses, la fenetre reste bien affichée comme prévu mais en
plus, les msgs que je lui passe restent également (uniquement valable
pour le script en cours).
Voilà ... je compte améliorer ce systeme plus tard. Pour le moment, ça
me suffit et passer une journée de plus sur ce problème ne m'enchante
pas des masses.
Encore merci à ceux qui m'ont donné un coup de main.
Dams
Alors, finalement je n'ai plus trop changé mon script. Grace à vos conseils, sur papier, il tourne!
En resumé, le probleme etait que lorsque je chargeais un script php, qui faisait l'appel à ma fonction jscript, la popup etait recréée et en plus, les messages de debugging ne restaient pas dans cette popup.
Maintenant ce problème est "réglé"! Miracle de l'informatique ou pur hasard, je ne sais pas. Le fait est que dans mon script principal, j'ai ajouté au onload de ma page, ma fonction de debugging! Resultat des courses, la fenetre reste bien affichée comme prévu mais en plus, les msgs que je lui passe restent également (uniquement valable pour le script en cours).
Voilà ... je compte améliorer ce systeme plus tard. Pour le moment, ça me suffit et passer une journée de plus sur ce problème ne m'enchante pas des masses.
Encore merci à ceux qui m'ont donné un coup de main. Dams
ASM
Alors voilà la nouvelle version:
Bon! généralités : pour ne pas faire re-ouvrir un popup à chque nouvelle page y affichée
truc = false; pop_options = le blabla des options du popup function pop(page) { if(!(truc) || truc.closed) truc= window.open('','',pop_options); truc.location.href = page; truc.focus(); }
function DebugPopup(strTxt) { if (!win || win.closed) win = window.open('','',popOptions);
// la un doute m'éfleure : pourquoi du php alors qu'il n'y a que du html ? win.location.href = 'mapage.php' temp += strTxt; // pour ton FF si c'est touj pas ok, ici essayer : // win.document.open(); var el = document.getElementById('scroller'); // delayage pour essayer de contenter FF el.innerHTML = (!(el.innerHTML) || el.inneHTML=='')? '' : el.innerHTML; el.innerHTML = el.innerHTML + temp + '<br>'; win.document.close(); win.focus(); }
Voici le html du popup: <body onBlur="this.focus()">
ce truc n'est pas trop top ! devrait t'obliger à fermer le popup si tu veux revenir à fenetre principale
<div id="header"></div> <div id="scroller"></div>
</body>
Voilà, je ne comprends donc pas pq le scroller se vide une fois que le chargement est fini.
parceque tu n'as pas entré la commande de fin ?
popup.document.close();
qui, pourtant, devrait être inutile.
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des scripts php qui verifie l'existence de la popup, comme ceci index.php?page=yyy chaque fois que index.php est appelé,
quand, comment et où est appelé cet index ? ce n'est pas le rôle d'un php (ou de tte nvelle page) de vérifier l'existance d'un popup ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans : - une iframe - une frame - un popup chacune de ces entités pouvant faire référence par leurs méthodes respectives aux variables de la page principale (si cette dernière ne change pas bien évidemment)
la popup est recréée !!! Visiblement, le navigateur (firefox) considere que c'est un nouvel opener!
Meu! non !
La page (nouvelle) qui est dans l'appelante cherche le popup qu'elle n'a pas créé elle-même Elle ne le connait pas puisqu'elle débarque ! donc hop! nouveau popup
repetita : c'est le popup qui connait toujours son opener pas le contraire
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
Alors voilà la nouvelle version:
Bon! généralités :
pour ne pas faire re-ouvrir un popup à chque nouvelle page y affichée
truc = false;
pop_options = le blabla des options du popup
function pop(page) {
if(!(truc) || truc.closed)
truc= window.open('','',pop_options);
truc.location.href = page;
truc.focus();
}
function DebugPopup(strTxt) {
if (!win || win.closed)
win = window.open('','',popOptions);
// la un doute m'éfleure : pourquoi du php alors qu'il n'y a que du html ?
win.location.href = 'mapage.php'
temp += strTxt;
// pour ton FF si c'est touj pas ok, ici essayer :
// win.document.open();
var el = document.getElementById('scroller');
// delayage pour essayer de contenter FF
el.innerHTML = (!(el.innerHTML) || el.inneHTML=='')? '' : el.innerHTML;
el.innerHTML = el.innerHTML + temp + '<br>';
win.document.close();
win.focus();
}
Voici le html du popup:
<body onBlur="this.focus()">
ce truc n'est pas trop top !
devrait t'obliger à fermer le popup
si tu veux revenir à fenetre principale
<div id="header"></div>
<div id="scroller"></div>
</body>
Voilà, je ne comprends donc pas pq le scroller se vide une fois que le
chargement est fini.
parceque tu n'as pas entré la commande de fin ?
popup.document.close();
qui, pourtant, devrait être inutile.
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des
scripts php qui verifie l'existence de la popup, comme ceci
index.php?page=yyy
chaque fois que index.php est appelé,
quand, comment et
où est appelé cet index ?
ce n'est pas le rôle d'un php (ou de tte nvelle page)
de vérifier l'existance d'un popup
ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans :
- une iframe
- une frame
- un popup
chacune de ces entités pouvant faire référence
par leurs méthodes respectives
aux variables de la page principale
(si cette dernière ne change pas bien évidemment)
la popup est recréée !!!
Visiblement, le navigateur (firefox) considere que c'est un nouvel opener!
Meu! non !
La page (nouvelle) qui est dans l'appelante
cherche le popup qu'elle n'a pas créé elle-même
Elle ne le connait pas puisqu'elle débarque !
donc hop! nouveau popup
repetita :
c'est le popup qui connait toujours son opener
pas le contraire
--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************
function DebugPopup(strTxt) { if (!win || win.closed) win = window.open('','',popOptions);
// la un doute m'éfleure : pourquoi du php alors qu'il n'y a que du html ? win.location.href = 'mapage.php' temp += strTxt; // pour ton FF si c'est touj pas ok, ici essayer : // win.document.open(); var el = document.getElementById('scroller'); // delayage pour essayer de contenter FF el.innerHTML = (!(el.innerHTML) || el.inneHTML=='')? '' : el.innerHTML; el.innerHTML = el.innerHTML + temp + '<br>'; win.document.close(); win.focus(); }
Voici le html du popup: <body onBlur="this.focus()">
ce truc n'est pas trop top ! devrait t'obliger à fermer le popup si tu veux revenir à fenetre principale
<div id="header"></div> <div id="scroller"></div>
</body>
Voilà, je ne comprends donc pas pq le scroller se vide une fois que le chargement est fini.
parceque tu n'as pas entré la commande de fin ?
popup.document.close();
qui, pourtant, devrait être inutile.
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des scripts php qui verifie l'existence de la popup, comme ceci index.php?page=yyy chaque fois que index.php est appelé,
quand, comment et où est appelé cet index ? ce n'est pas le rôle d'un php (ou de tte nvelle page) de vérifier l'existance d'un popup ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans : - une iframe - une frame - un popup chacune de ces entités pouvant faire référence par leurs méthodes respectives aux variables de la page principale (si cette dernière ne change pas bien évidemment)
la popup est recréée !!! Visiblement, le navigateur (firefox) considere que c'est un nouvel opener!
Meu! non !
La page (nouvelle) qui est dans l'appelante cherche le popup qu'elle n'a pas créé elle-même Elle ne le connait pas puisqu'elle débarque ! donc hop! nouveau popup
repetita : c'est le popup qui connait toujours son opener pas le contraire
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
pounch
Voici le html du popup: <body onBlur="this.focus()">
ce truc n'est pas trop top ! devrait t'obliger à fermer le popup si tu veux revenir à fenetre principale
justement, il garde le focus sur la popup ... ce qui est genant un peu mais pas encore de trop ... ce n'est pas mon but premier
popup.document.close();
qui, pourtant, devrait être inutile.
effectivement, il n'a pas servi à grand'chose
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des scripts php qui verifie l'existence de la popup, comme ceci index.php?page=yyy chaque fois que index.php est appelé,
quand, comment et où est appelé cet index ? ce n'est pas le rôle d'un php (ou de tte nvelle page) de vérifier l'existance d'un popup ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans : - une iframe - une frame - un popup chacune de ces entités pouvant faire référence par leurs méthodes respectives aux variables de la page principale (si cette dernière ne change pas bien évidemment)
index.php est mon fichier principal qui gere les différentes sections à visiter
repetita : c'est le popup qui connait toujours son opener pas le contraire
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
mais jette un oeil sur mon dernier post!
Voici le html du popup:
<body onBlur="this.focus()">
ce truc n'est pas trop top !
devrait t'obliger à fermer le popup
si tu veux revenir à fenetre principale
justement, il garde le focus sur la popup ... ce qui est genant un peu
mais pas encore de trop ... ce n'est pas mon but premier
popup.document.close();
qui, pourtant, devrait être inutile.
effectivement, il n'a pas servi à grand'chose
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des
scripts php qui verifie l'existence de la popup, comme ceci
index.php?page=yyy
chaque fois que index.php est appelé,
quand, comment et
où est appelé cet index ?
ce n'est pas le rôle d'un php (ou de tte nvelle page)
de vérifier l'existance d'un popup
ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans :
- une iframe
- une frame
- un popup
chacune de ces entités pouvant faire référence
par leurs méthodes respectives
aux variables de la page principale
(si cette dernière ne change pas bien évidemment)
index.php est mon fichier principal qui gere les différentes sections à
visiter
repetita :
c'est le popup qui connait toujours son opener
pas le contraire
pourtant quand je demande à Popup de me donner le nom de Opener, il me
donne une erreur comme quoi Opener n'a pas de methodes ...
Voici le html du popup: <body onBlur="this.focus()">
ce truc n'est pas trop top ! devrait t'obliger à fermer le popup si tu veux revenir à fenetre principale
justement, il garde le focus sur la popup ... ce qui est genant un peu mais pas encore de trop ... ce n'est pas mon but premier
popup.document.close();
qui, pourtant, devrait être inutile.
effectivement, il n'a pas servi à grand'chose
Par ailleurs, (c'est pour ASM) comme je le disais, je fais appel à des scripts php qui verifie l'existence de la popup, comme ceci index.php?page=yyy chaque fois que index.php est appelé,
quand, comment et où est appelé cet index ? ce n'est pas le rôle d'un php (ou de tte nvelle page) de vérifier l'existance d'un popup ouvert par une autre page précédente (et disparue).
à la rigueur tu fais ouvrir l'index dans : - une iframe - une frame - un popup chacune de ces entités pouvant faire référence par leurs méthodes respectives aux variables de la page principale (si cette dernière ne change pas bien évidemment)
index.php est mon fichier principal qui gere les différentes sections à visiter
repetita : c'est le popup qui connait toujours son opener pas le contraire
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
mais jette un oeil sur mon dernier post!
Do Re Mi chel La Si Do
Bonsoir !
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux : - L'évènement focus est déclenché une fois de plus (évidement, mais ça ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer). - L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Merci encore. -- Michel Claveau
Bonsoir !
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux :
- L'évènement focus est déclenché une fois de plus (évidement, mais ça
ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer).
- L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux : - L'évènement focus est déclenché une fois de plus (évidement, mais ça ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer). - L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Merci encore. -- Michel Claveau
Cenekemoi
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
-- Cordialement, Thierry ;-)
pourtant quand je demande à Popup de me donner le nom de Opener, il me
donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
-- Cordialement, Thierry ;-)
pounch
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner des
noms propres aux objets de programmation ... Là, je voulais simplement montrer que les deux acteurs - Popup et Opener - avaient quelques problemes de communication ... c'est comme si j'avais parlé de Popol et Arthur... tu vois!?
pourtant quand je demande à Popup de me donner le nom de Opener, il me
donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner des
noms propres aux objets de programmation ...
Là, je voulais simplement montrer que les deux acteurs - Popup et Opener
- avaient quelques problemes de communication ... c'est comme si j'avais
parlé de Popol et Arthur... tu vois!?
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner des
noms propres aux objets de programmation ... Là, je voulais simplement montrer que les deux acteurs - Popup et Opener - avaient quelques problemes de communication ... c'est comme si j'avais parlé de Popol et Arthur... tu vois!?
pounch
Bonsoir !
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux : - L'évènement focus est déclenché une fois de plus (évidement, mais ça ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer). - L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Merci encore.
De ton cote si tu arrives à quelque chose de fonctionnel à 100%, je suis preneur ;-)
Bonsoir !
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux :
- L'évènement focus est déclenché une fois de plus (évidement, mais ça
ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer).
- L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Merci encore.
De ton cote si tu arrives à quelque chose de fonctionnel à 100%, je suis
preneur ;-)
Résultat des courses : le problème a l'air d'être réglé.
Mais j'en ai deux nouveaux : - L'évènement focus est déclenché une fois de plus (évidement, mais ça ne m'arrange pas ; toutefois, avec un flag, je vais pouvoir le gérer). - L'empilement des fenêtres (ordre d'affichage) n'est plus bon.
Néanmoins, je dois pouvoir faire quelque chose, avec cette piste.
Merci encore.
De ton cote si tu arrives à quelque chose de fonctionnel à 100%, je suis preneur ;-)
Cenekemoi
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner
des noms propres aux objets de programmation ... Là, je voulais simplement montrer que les deux acteurs - Popup et Opener - avaient quelques problemes de communication ... c'est comme si j'avais parlé de Popol et Arthur... tu vois!?
Oui, pas de problème ; mais comme deux précautions valent mieux qu'une...
Au fait, qu'appelles-tu "le nom de Opener" (cf. 5ème ligne), peux-tu indiquer ton code ?
-- Cordialement, Thierry ;-)
pourtant quand je demande à Popup de me donner le nom de Opener, il
me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner
des noms propres aux objets de programmation ...
Là, je voulais simplement montrer que les deux acteurs - Popup et
Opener - avaient quelques problemes de communication ... c'est comme
si j'avais parlé de Popol et Arthur... tu vois!?
Oui, pas de problème ; mais comme deux précautions valent mieux
qu'une...
Au fait, qu'appelles-tu "le nom de Opener" (cf. 5ème ligne), peux-tu
indiquer ton code ?
pourtant quand je demande à Popup de me donner le nom de Opener, il me donne une erreur comme quoi Opener n'a pas de methodes ...
Tu as mis "opener" SANS majuscule, on est bien d'accord ???
... oui quand même, je ne suis pas encore assez bête que pour donner
des noms propres aux objets de programmation ... Là, je voulais simplement montrer que les deux acteurs - Popup et Opener - avaient quelques problemes de communication ... c'est comme si j'avais parlé de Popol et Arthur... tu vois!?
Oui, pas de problème ; mais comme deux précautions valent mieux qu'une...
Au fait, qu'appelles-tu "le nom de Opener" (cf. 5ème ligne), peux-tu indiquer ton code ?
-- Cordialement, Thierry ;-)
Do Re Mi chel La Si Do
Bonjour !
Je doute que le source te serve. En effet, je travaille avec un serveur COM (en Python), en arrière-plan. A l'ouverture de la page de départ, un lien (COM) est établi, entre chaque objet de la page, et un dictionnaire (un tableau indexé) Python. J'ai couramment plus d'une centaine de liens COM établis entre la page "utilisateur", et le programme d'arrière-plan (par new ActiveXObject("Ponx.Mci")).
Dès lors, dans Python, je peux utiliser les propriétés des objets. Par exemple, il est possible de possible de lire/écrire innerHTML, outerHTML,left, top, value, etc.
Autrement dit, depuis mon programme en arrière-plan, je peux modifier à volonté le contenu de la page. De la même manière, j'ai un accès aux tableaux javascript (mais curieusement, par aux variables isolées).
Par contre, pour gérer les évènements, je suis obligé de m'appuyer sur javascript.
Dans la pratique, cela se passe de la façon suivante : lorsqu'un utilisateur appuie sur [Tab], après avoir sais un champ, le blur est intercepté, au niveau de la page, et une fonction d'arrière-plan (en python) est appelée, avec le nom de la cible en paramètre. La fonction d'arrière-plan à un accès à tous les objets de la page, sans utiliser appel à la page. Elle peut donc effectuer toutes les opérations, et modifier le contenu du champ courant, ou d'un autre ; puis elle rend la main à la page.
Lorsqu'une fenêtre supplémentaire est ouverte (.open), au lieu d'établir un nouveau lien COM, j'ouvre une copie sur l'opener (var liencom=opener.liencom;) ce qui me permet d'utiliser le même programme d'arrière-plan, pour plusieurs fenêtres. Le module de déboguage ne fait qu'utiliser ce système. Mais il s'appuie sur le système de déboguage standard de Python, qui a justement été prévu pour être héritable (tout développeur peut ainsi faire son propre débogueur).
Par contre, j'ai une faiblesse, car je n'arrive pas à appeler, à distance, une fonction javascript. Alors j'ai utilisé une ruse démoniaque, mais pas jolie jolie : la page contient un objet (texte) caché (left:-10000) contenant "". Une fonction tourne en permanence (setTimeout) ; dès que le contenu de l'objet change, il est copié, effacé, puis exécuté (par eval). Cela me permet de déclencher du javascript, depuis mon programme d'arrière-plan.
Je n'ai pas fini mon projet, mais, en l'état actuel, c'est très prometteur (ça fonctionne).
Pour les codes sources, je veux bien les donner. D'ailleurs ils sont disponibles, librement, sur mes sites. Mais il faut savoir que le serveur COM contient 2800 lignes de Python (soit l'équivalent d'au moins 28 000 lignes de C++), plus 1200 lignes complémentaires, pour gérer l'aspect GUI, et 'seulement' 600 lignes de javascript.
Mais tu peux toujours regarder là : http://ponx.org (Internet-explorer + javascript obligatoire) http://iponx.blogspot.com/
Sinon, j'aimerais bien le montrer à d'autres développeurs, histoire de me resituer. Je l'ai montré à la convention Paradox, en Allemagne, et à quelques rares autres développeurs. J'ai eu, quelques personnes très intéressées, mais qui ne suivaient pas, techniquement, et quelques autres, au niveau suffisant, mais qui attendent que j'ai avancé plus. Eventuellement, je passe à Paris ou Lyon, une à deux fois par mois. Avis aux amateurs.
Bonne journée.
Et merci à ASM et à YD, qui m'ont presque toujours trouvé des solutions.
-- Michel Claveau
PS : le serveur COM est accessible depuis PHP ; mais il faut que Python soit installé, et tout est prévu pour un travail en local.
Bonjour !
Je doute que le source te serve. En effet, je travaille avec un serveur COM
(en Python), en arrière-plan. A l'ouverture de la page de départ, un lien
(COM) est établi, entre chaque objet de la page, et un dictionnaire (un
tableau indexé) Python. J'ai couramment plus d'une centaine de liens COM
établis entre la page "utilisateur", et le programme d'arrière-plan (par new
ActiveXObject("Ponx.Mci")).
Dès lors, dans Python, je peux utiliser les propriétés des objets. Par
exemple, il est possible de possible de lire/écrire innerHTML,
outerHTML,left, top, value, etc.
Autrement dit, depuis mon programme en arrière-plan, je peux modifier à
volonté le contenu de la page. De la même manière, j'ai un accès aux
tableaux javascript (mais curieusement, par aux variables isolées).
Par contre, pour gérer les évènements, je suis obligé de m'appuyer sur
javascript.
Dans la pratique, cela se passe de la façon suivante : lorsqu'un
utilisateur appuie sur [Tab], après avoir sais un champ, le blur est
intercepté, au niveau de la page, et une fonction d'arrière-plan (en python)
est appelée, avec le nom de la cible en paramètre. La fonction
d'arrière-plan à un accès à tous les objets de la page, sans utiliser appel
à la page. Elle peut donc effectuer toutes les opérations, et modifier le
contenu du champ courant, ou d'un autre ; puis elle rend la main à la page.
Lorsqu'une fenêtre supplémentaire est ouverte (.open), au lieu d'établir un
nouveau lien COM, j'ouvre une copie sur l'opener (var
liencom=opener.liencom;) ce qui me permet d'utiliser le même programme
d'arrière-plan, pour plusieurs fenêtres. Le module de déboguage ne fait
qu'utiliser ce système. Mais il s'appuie sur le système de déboguage
standard de Python, qui a justement été prévu pour être héritable (tout
développeur peut ainsi faire son propre débogueur).
Par contre, j'ai une faiblesse, car je n'arrive pas à appeler, à distance,
une fonction javascript. Alors j'ai utilisé une ruse démoniaque, mais pas
jolie jolie : la page contient un objet (texte) caché (left:-10000)
contenant "". Une fonction tourne en permanence (setTimeout) ; dès que le
contenu de l'objet change, il est copié, effacé, puis exécuté (par eval).
Cela me permet de déclencher du javascript, depuis mon programme
d'arrière-plan.
Je n'ai pas fini mon projet, mais, en l'état actuel, c'est très prometteur
(ça fonctionne).
Pour les codes sources, je veux bien les donner. D'ailleurs ils sont
disponibles, librement, sur mes sites. Mais il faut savoir que le serveur
COM contient 2800 lignes de Python (soit l'équivalent d'au moins 28 000
lignes de C++), plus 1200 lignes complémentaires, pour gérer l'aspect GUI,
et 'seulement' 600 lignes de javascript.
Mais tu peux toujours regarder là :
http://ponx.org (Internet-explorer + javascript obligatoire)
http://iponx.blogspot.com/
Sinon, j'aimerais bien le montrer à d'autres développeurs, histoire de me
resituer. Je l'ai montré à la convention Paradox, en Allemagne, et à
quelques rares autres développeurs. J'ai eu, quelques personnes très
intéressées, mais qui ne suivaient pas, techniquement, et quelques autres,
au niveau suffisant, mais qui attendent que j'ai avancé plus.
Eventuellement, je passe à Paris ou Lyon, une à deux fois par mois. Avis
aux amateurs.
Bonne journée.
Et merci à ASM et à YD, qui m'ont presque toujours trouvé des solutions.
--
Michel Claveau
PS : le serveur COM est accessible depuis PHP ; mais il faut que Python soit
installé, et tout est prévu pour un travail en local.
Je doute que le source te serve. En effet, je travaille avec un serveur COM (en Python), en arrière-plan. A l'ouverture de la page de départ, un lien (COM) est établi, entre chaque objet de la page, et un dictionnaire (un tableau indexé) Python. J'ai couramment plus d'une centaine de liens COM établis entre la page "utilisateur", et le programme d'arrière-plan (par new ActiveXObject("Ponx.Mci")).
Dès lors, dans Python, je peux utiliser les propriétés des objets. Par exemple, il est possible de possible de lire/écrire innerHTML, outerHTML,left, top, value, etc.
Autrement dit, depuis mon programme en arrière-plan, je peux modifier à volonté le contenu de la page. De la même manière, j'ai un accès aux tableaux javascript (mais curieusement, par aux variables isolées).
Par contre, pour gérer les évènements, je suis obligé de m'appuyer sur javascript.
Dans la pratique, cela se passe de la façon suivante : lorsqu'un utilisateur appuie sur [Tab], après avoir sais un champ, le blur est intercepté, au niveau de la page, et une fonction d'arrière-plan (en python) est appelée, avec le nom de la cible en paramètre. La fonction d'arrière-plan à un accès à tous les objets de la page, sans utiliser appel à la page. Elle peut donc effectuer toutes les opérations, et modifier le contenu du champ courant, ou d'un autre ; puis elle rend la main à la page.
Lorsqu'une fenêtre supplémentaire est ouverte (.open), au lieu d'établir un nouveau lien COM, j'ouvre une copie sur l'opener (var liencom=opener.liencom;) ce qui me permet d'utiliser le même programme d'arrière-plan, pour plusieurs fenêtres. Le module de déboguage ne fait qu'utiliser ce système. Mais il s'appuie sur le système de déboguage standard de Python, qui a justement été prévu pour être héritable (tout développeur peut ainsi faire son propre débogueur).
Par contre, j'ai une faiblesse, car je n'arrive pas à appeler, à distance, une fonction javascript. Alors j'ai utilisé une ruse démoniaque, mais pas jolie jolie : la page contient un objet (texte) caché (left:-10000) contenant "". Une fonction tourne en permanence (setTimeout) ; dès que le contenu de l'objet change, il est copié, effacé, puis exécuté (par eval). Cela me permet de déclencher du javascript, depuis mon programme d'arrière-plan.
Je n'ai pas fini mon projet, mais, en l'état actuel, c'est très prometteur (ça fonctionne).
Pour les codes sources, je veux bien les donner. D'ailleurs ils sont disponibles, librement, sur mes sites. Mais il faut savoir que le serveur COM contient 2800 lignes de Python (soit l'équivalent d'au moins 28 000 lignes de C++), plus 1200 lignes complémentaires, pour gérer l'aspect GUI, et 'seulement' 600 lignes de javascript.
Mais tu peux toujours regarder là : http://ponx.org (Internet-explorer + javascript obligatoire) http://iponx.blogspot.com/
Sinon, j'aimerais bien le montrer à d'autres développeurs, histoire de me resituer. Je l'ai montré à la convention Paradox, en Allemagne, et à quelques rares autres développeurs. J'ai eu, quelques personnes très intéressées, mais qui ne suivaient pas, techniquement, et quelques autres, au niveau suffisant, mais qui attendent que j'ai avancé plus. Eventuellement, je passe à Paris ou Lyon, une à deux fois par mois. Avis aux amateurs.
Bonne journée.
Et merci à ASM et à YD, qui m'ont presque toujours trouvé des solutions.
-- Michel Claveau
PS : le serveur COM est accessible depuis PHP ; mais il faut que Python soit installé, et tout est prévu pour un travail en local.
ecm06
Je cherche à créer un systeme de debugging dans une fenetre à part. Donc, dans ma webapp, si le debugging est ON, une popup s'ouvre et affiche les messages de debugging qu'on lui passe.
Donc l'idée est de vérifier si la popup existe si oui, on lui passe le texte à afficher si non, on la crée et on lui passe le texte à afficher.
Euh, je vais dire une bétise (peut-être) mais :
1) précise le nom de target dans le window.open() 2) la fenêtre est ouverte ou n'existe pas : pareil, on lance un window.open('...','bidule','...) et ça ouvrira une nouvelle fenêtre ou encore remplacera le contenu actuel du popup par le nouveau... sans ouvrir de nouvelle fenêtre (puisqu'elle existe déjà)
Thierry
Je cherche à créer un systeme de debugging dans une fenetre à part.
Donc, dans ma webapp, si le debugging est ON, une popup s'ouvre et
affiche les messages de debugging qu'on lui passe.
Donc l'idée est de vérifier si la popup existe
si oui, on lui passe le texte à afficher
si non, on la crée et on lui passe le texte à afficher.
Euh, je vais dire une bétise (peut-être) mais :
1) précise le nom de target dans le window.open()
2) la fenêtre est ouverte ou n'existe pas : pareil, on lance un
window.open('...','bidule','...) et ça ouvrira une nouvelle fenêtre ou
encore remplacera le contenu actuel du popup par le nouveau... sans ouvrir
de nouvelle fenêtre (puisqu'elle existe déjà)
Je cherche à créer un systeme de debugging dans une fenetre à part. Donc, dans ma webapp, si le debugging est ON, une popup s'ouvre et affiche les messages de debugging qu'on lui passe.
Donc l'idée est de vérifier si la popup existe si oui, on lui passe le texte à afficher si non, on la crée et on lui passe le texte à afficher.
Euh, je vais dire une bétise (peut-être) mais :
1) précise le nom de target dans le window.open() 2) la fenêtre est ouverte ou n'existe pas : pareil, on lance un window.open('...','bidule','...) et ça ouvrira une nouvelle fenêtre ou encore remplacera le contenu actuel du popup par le nouveau... sans ouvrir de nouvelle fenêtre (puisqu'elle existe déjà)