« Fonctionnement technique de Jeuxvideo.com » : différence entre les versions
→Passage en React : crédit rand0max la fonction est generique mais la syntaxe précise ci-dessous est issue de rand0max. |
|||
| (2 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 246 : | Ligne 246 : | ||
<s>messageTextArea.value = message;</s> | <s>messageTextArea.value = message;</s> | ||
Heureusement, il existe | Heureusement, il existe '''un astuce très utilisée''' sur le web pour contourner ce soucis.<br>Voilà une variante de cette méthode fournie dans le code de JVChat d'après ce [https://www.jeuxvideo.com/forums/message/1286139785 message] : | ||
function fonctionReact(textarea, value) { | function fonctionReact(textarea, value) { | ||
| Ligne 281 : | Ligne 281 : | ||
jvc.getMessageEditor(".class").selectedText; // Récupérer la sélection utilisateur. | jvc.getMessageEditor(".class").selectedText; // Récupérer la sélection utilisateur. | ||
PS : Pour garantir le bon fonctionnement, utilisez simplement jvc.getMessageEditor(); | PS : Pour garantir le bon fonctionnement, utilisez simplement <code>jvc.getMessageEditor();</code> et/ou <code>unsafeWindow.jvc.getMessageEditor();</code> <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> | ||
Il est nécessaire de faire appel à <code>jvc.getMessageEditor();</code> à chaque modification, sinon vous travaillerez avec une version antérieure | Il est nécessaire de faire appel à <code>jvc.getMessageEditor();</code> à chaque modification, sinon vous travaillerez avec une version antérieure. | ||
Cette fonction prend directement en compte des sélecteurs CSS et pas des éléments, exemple : | Cette fonction prend directement en compte des sélecteurs CSS et pas des éléments, exemple : | ||
let selector = "#message_topic" | let selector = "#message_topic"; | ||
jvc.getMessageEditor(selector).insertText('text'); //✅ Marche | jvc.getMessageEditor(selector).insertText('text'); //✅ Marche | ||
let selector = document.getElementById("message_topic") | let selector = document.getElementById("message_topic"); | ||
jvc.getMessageEditor(selector).insertText('text'); //❌ Ne marche pas | jvc.getMessageEditor(selector).insertText('text'); //❌ Ne marche pas | ||