| |
Membre enregistré 1 364 messages |
|
| Posté le 24 novembre 2025 - 01:55 |
Bonjour, J'utilise java pour récupérer des éléments d'un champ HTML. Voici mon code;
sJava est chaine = [ var element = document.activeElement.type; if (element == "password") { document.activeElement.value = element; } else { document.activeElement.value = "Autre"; } }]
Alors que ce code fonctionne bien avec l'éditeur W3Schools, il ne fonctionne pas dans WM. La condition if ne fonctionne pas et ce peut importe les différents test effectués.
Voici mon code Wlangage;
FEN_Principale.HTM_WEB.ExécuteJS(sJava)
Quelqu'un sait pourquoi? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
| Posté le 24 novembre 2025 - 12:16 |
Bonjour, Que souhaitez vous faire exactement ? Car là votre code Javascript et non java (ce sont deux langages différents) est étrange.. Il récupère l'élément du DOM qui à le focus puis écrit dans ce champ la valeur du type de l'élément ou dans le cas d'un menu sélectionnera l'élément correspondant au type. Mais vous ne récupérez rien, si vous souhaitez récupérer une valeur il faut spécifier une callback ExécuteJS(<Champ d'affichage HTML> , <Code Javascript> , <Callback Procédure WLangage>) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 25 novembre 2025 - 14:52 |
Bonjour Sylvain, je vous l'accorde, mon code n'est pas logique mais il ne s'agit que d'un exemple et la valeur retournée n'a pas d'importance pour cet exemple.
Ce que je veux indiquer, c'est que je ne suis pas capable de faire fonctionner la partie du 'if{}' car le code ne se rend pas à cet endroit.
Théoriquement, le 'if' devrait me retourner une valeur et il ne me retourne absolument rien. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 25 novembre 2025 - 14:53 |
| Pour ce qui est du DOM, je l'utilise pour écrire directement dans le champ de la page WEB. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 003 messages |
|
| Posté le 25 novembre 2025 - 15:10 |
Bonjour,
if (element == 'password') {
Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
| Posté le 25 novembre 2025 - 17:09 |
Bonjour, Ok je comprend mieux, vous essayez de remplir des champs d'une page par programmation ou un truc du genre ? C'est pas simple de debug avec un champ html. Avez-vous essayez de faire un alert(element) pour voir la valeur de element, car là je dirais que celui-ci est undefined.
Je vous conseil de passer plutôt par un querySelector pour retrouver vos champs plutôt que le champ qui a le focus. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 25 novembre 2025 - 21:19 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 26 novembre 2025 - 02:26 |
Sylvain, j'ai résolu mon problème et ça fonctionne maintenant. Il me reste un soucis à regler. Les champs de saisie qui ont l'attribut autocomplete à "off" m'empeche de remplir automatiquement ces champs. J'ai réussi à mettre l'attribut à 'on' mais ça ne fonctionne pas.
Je pense qu'il faudrait remplacer l'autocomplete avant l'ouverture de la page. Aurais-tu une idée pour que ça fonctionne? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
| Posté le 26 novembre 2025 - 12:24 |
Bonjour, c'est étonnant normalement autocomplete empêche juste le navigateur de remplir les champs automatiquement mais pas le remplissage par code. Peut-être un script de la page qui vous l'empêche ? Pour les cas un peu tordu vous pouvez aussi simuler la saisie au clavier, un exemple que l'IA me donne :
async FUNCTION simulateKeystrokes(element, text, delay = 100) { for (const char of text) { element.dispatchEvent(new KeyboardEvent("keydown", { key: char })); element.value += char; element.dispatchEvent(new Event("input")); element.dispatchEvent(new KeyboardEvent("keyup", { key: char }));
await new Promise(r => setTimeout(r, delay)); } }
const Input = Document.querySelector("#monInput"); simulateKeystrokes(Input, "Bonjour !"); |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 26 novembre 2025 - 17:06 |
Bonjour Sylvain, j'ai essayé le code que tu as ajouté et ça fonctionne au poil. Même pas besoin de modifier l'attribue autocomplete.
J'ai toutefois quelques chose de spécial. Si le caractère '\' se est dans la chaine à coller, ce caractère s'efface. Si je double le caractère dans la chaine d'origine, un seul caractère '\' se retrouve dans la chaine finale.
Ça fonctionne mais j'aimerais comprendre pourquoi! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
| Posté le 27 novembre 2025 - 09:52 |
Bonjour l'antislash est le caractère d'échappement il faut donc le doubler quand il apparait à l'intérieur de la chaine. Quand vous utilisez une chaine déclarée avec des doubles quotes , et qu'une double quote doit apparaître dans votre chaine il faut échapper la double quote, de même en cas de déclaration avec une apostrophe Par exemple :
let dummyQuote="ma chaine \" avec une double quote"; let dummyApostrophe='ma chaine \' avec une apostrophe'; let dummyAntiSlash= " ma chaine \\ avec un antislah"; |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 364 messages |
|
| Posté le 27 novembre 2025 - 15:01 |
Merci!  |
| |
| |
| | | |
|
| | |