« Fonctionnement technique de Jeuxvideo.com » : différence entre les versions

(→‎Fonction officielle JVC : Réécriture)
Ligne 266 : Ligne 266 :


Par ailleurs, en dehors de cette méthode, JVC a proposé une entrée native pour interagir directement avec REACT.<br>
Par ailleurs, en dehors de cette méthode, JVC a proposé une entrée native pour interagir directement avec REACT.<br>
<code>jvc.getMessageEditor()</code>
<code>jvc.getMessageEditor();</code> (C'est une entrée partielle, pour réaliser des fonctions officielles du site.)


https://www.jeuxvideo.com/forums/message/1286112457
https://www.jeuxvideo.com/forums/message/1286112457


  let editor = jvc.getMessageEditor('#bloc-formulaire-forum #message_topic'); //selectionner la zone de texte
  jvc.getMessageEditor(".class").insertText(`mon texte`); // Place du texte à l'endroit sur le focus
if (null !== editor) {
jvc.getMessageEditor(".class").insertStartLine(`mon texte`); // Place du texte en début de ligne.
    editor.insertText(`mon texte`); //pour insérer du texte à un endroit précis.
  jvc.getMessageEditor(".class").selectedText; // Récupérer la sélection utilisateur.
    editor.insertStartLine(`mon texte`); //insérer du texte en debut de ligne.
  }


Important il faut retirer la variable "windows" devant la fonction "jvc" .
PS : Pour garantir le bon fonctionnement, utilisez simplement jvc.getMessageEditor(); '''sans le préfixe "window"'''.<ref>Les userscripts sont exécutés dans un environnement isolé (appelé sandbox), ce qui empêche parfois l’accès direct aux objets définis dans le contexte global de la page, comme window</ref>. <br>


Cette fonction prend directement en compte des sélecteurs CSS, exemple :
Il est nécessaire de faire appel à <code>jvc.getMessageEditor();</code> à chaque modification, sinon vous travaillerez avec une version antérieure de la zone de texte.


let selector = document.getElementById("message_topic")
Cette fonction prend directement en compte des sélecteurs CSS et pas des éléments, exemple :
jvc.getMessageEditor(selector).insertText('text'); //❌ Ne marche pas


  let selector = "#message_topic"
  let selector = "#message_topic"
  jvc.getMessageEditor(selector).insertText('text'); //✅ Marche
  jvc.getMessageEditor(selector).insertText('text'); //✅ Marche


jvc.getMessageEditor() peut sembler fonctionner comme un input, '''mais ce n’est pas le cas'''.<br>
let selector = document.getElementById("message_topic")
Elle ne retourne pas un lien direct vers la zone de texte, mais une photo de son état au moment de l’appel.<br>
jvc.getMessageEditor(selector).insertText('text'); //❌ Ne marche pas
En appelant la fonction, on récupère l'état actuel de la zone de texte et on peut ajouter des données dessus.<br>


Il est donc très important de rappeler la fonction à chaque fois pour éviter des modifications sur un État antérieur.


Cette fonction présente néanmoins de nombreux avantages : native à JVC, gestion automatique du Focus (curseur), gestion des espaces.  
Cependant, cette fonction présente plusieurs avantages notables : elle est à la fois native à JVC et intégrée au fonctionnement de React.


Elle est très pratique pour de l'insertion de texte à un endroit localisé, c'est d'ailleurs la fonction officielle pour l'intégration des smileys.
De plus, contrairement à une modification directe du champ texte via JavaScript, cette fonction ne nécessite aucune gestion manuelle du curseur, de la sélection ou des espaces, tout est automatiquement pris en charge par la fonction elle-même.


En revanche, pour manipuler le champ entièrement (suppression, remplacement) {{fleched}} la fonction à moins d'intérêt.
En revanche, pour manipuler le champ entièrement (suppression, remplacement) {{fleched}} la fonction à moins d'intérêt.
Pour simplifier : <code>jvc.getMessageEditor(<span style="color:red;">"AreaIDClasse"</span>).insertText(<span style="color:green;">message</span>);</code> avec cette fonction. Permettra d'ajouter un morceau de texte à la classe sélectionnée.


== Liens externes ==
== Liens externes ==
Kheys
2 112

modifications