[RESOLU] JS ne fonctionne pas sur IIS

Eléphant du PHP | 213 Messages

05 mai 2022, 16:44

Bonjour,

L'application fonctionne très bien en php, sur les serveurs apache, WAMP.
Mais l'application est diffusée sur un serveur IIS.
Il n'ya pas d'appache installé.
Seul le code JavaSript ne fonctionne pas.
Une erreur aussi se produit, si cela peux vous aiguiller.
Le serveur IIS ne peut lire le code

Code : Tout sélectionner

<?PHP include'/Data/monfichier.php'?>
Je dois supprimer le premier /

Code : Tout sélectionner

<?PHP include'Data/monfichier.php'?>
Pour ce qui est du code JS

Code : Tout sélectionner

<?php include 'header.php'; ?> <div id="global"> <div id="texteglobal"> </br></br> <H1><center>CODE FINAL</center></H1> Copier/Coller le code suivant dans la rubrique "Comment and Worknotes" de Service Now </br></br> <?php // setlocale(LC_TIME, 'fr_FR.UTF8'); // setlocale(LC_TIME, 'fr_FR'); // setlocale(LC_TIME, 'fr'); setlocale(LC_TIME, 'fra_fra'); // Set session variables $date = date('[d/m/y - H:i]'); $version = "[Version_2.02]"; $code= "[ADC_START]"; $codefin= "[ADC_END]"; //Code pour le checksum. $chaine = $_SESSION['Balises2']; //le checksum ressemble à un CRC32. //En php il suffit d'appeler la fonction crc32 : $checksum = crc32($chaine); // Cela génère un entier. // Représentation héxadécimal:faire un dechex : $str = dechex($checksum); $_SESSION["Balises"] = $_POST["balise"]; $_SESSION["Balises"] = $code . $_SESSION["Balises"]. $str . $date . $version . $codefin; ?> </br></br> <!-- Le formulaire --> <form id="form-copier" > <!-- champ de saisie de texte --> <textarea id="texte" cols="90" rows="3" disabled="disabled"><?php echo $_SESSION["Balises"]?> </textarea> <br /><br /> <!-- Bouton copier --> <input type="button" onclick="copierTexte(event)" value="Copier les Balises"/> </form> <!-- Le script JavaScript --> <script type="text/javascript"> // On sélectionne le formulaire var form_copier_coller = document.getElementById("form-copier") // On sélectionne le <textarea> var textarea_texte = document.getElementById("texte") // Copier le texte copierTexte = (e) => { // On désactive l'action du formulaire e.preventDefault() // 1. Si le <textarea> n'est pas vide if (textarea_texte.value.length) { // 2. On copie le texte dans le presse-papier navigator.clipboard.writeText(textarea_texte.value).then(() => { const dialog = document.createElement('dialog'); dialog.textContent = 'text copié'; document.body.append(dialog); dialog.append(document.createElement('br')); const btn = document.createElement('button'); btn.textContent = 'fermer'; dialog.append(btn); btn.addEventListener('click', () => { dialog.close(); }); dialog.showModal(); }) } else { alert("Veillez saisir le texte à copier") } } </script> </p> </br> </div><!*-------END DIV texte----> </div><!*-------END DIV texte----> </div> <?php include 'footer.php'; ?>
Pourquoi le bouton "Copier les Balises" ne répond pas.
J'ai même essayer avec un windows.location.href'monfichier.php' >> pas de réponse.

Merci.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mai 2022, 00:19

"dialog" est expérimental et peut ne pas fonctionner partout

https://developer.mozilla.org/en-US/doc ... patibility

Il existe un polyfill : https://github.com/GoogleChrome/dialog-polyfill

Code : Tout sélectionner

windows.location.href'monfichier.php' //incorrect window.location.href = 'monfichier.php' //correct //C'est pas "Windows" le système d'exploitation et il faut assigner une nouvelle valeur avec = ;)

Eléphant du PHP | 213 Messages

06 mai 2022, 09:10

Bonjour two3d,
Merci pour tes infos.
Mais les user ne peuvent utiliser que Edge.
J'ai mis mon application sur mon serveur OVH, et cela fonctionne avec Edge.
Mais pas sur le serveur IIS du client.
J'ai essayé aussi.

Code : Tout sélectionner

window.location.href = 'https://nomdedomaine/monfichier.php'
Pas de réponse depuis le serveur IIS sous Edge.
Merci.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mai 2022, 09:33

Tu as location.replace qui peut t'aider, bizarre que window.location ne fonctionne pas, mal utilisé je pense ou non compatible dans l'environnement utilisé

Fais bien un window. quand window est chargé ;)

Eléphant du PHP | 213 Messages

06 mai 2022, 12:36

Bonjour two3d

Je viens de tester

Code : Tout sélectionner

windows.location.replace='monfichier.php'
cela ne fonctionne pas non plus.
Faut-il aussi ajouter le nom de domaine avant la page?
Je vais installer un serveur IIS sur mon pc et voir si les erreurs sont idem.
Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mai 2022, 15:47

Il faut surtout voir la doc pour savoir comment ça fonctionne : https://developer.mozilla.org/fr/docs/W ... on/replace ;)

Eléphant du PHP | 213 Messages

10 mai 2022, 09:30

Bonjour two3d,
J'ai essayé avec ce code.

Code : Tout sélectionner

document.location.replace('http://nomdedomaine/pagefin.php/Location.reload');
Cela fonctionne sur mon serveur IIS en PHP 7.4.9.
Cela fonctionne sur Wamp.
Cela fonctionne sur mon site OVH 'PHP).
Mais ne fonctionne pas sur le serveur IIS en PHP7.4.28 du client.

Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

10 mai 2022, 10:26


Eléphant du PHP | 213 Messages

11 mai 2022, 10:05

Bonjour two3d,

J'ai trouvé une solution qui fonctionne.

Code : Tout sélectionner

<!-- Le formulaire condition ELSEIF--> <form id="form-copier" > <!-- champ de saisie de texte --> <textarea class="js-text" id="texte" cols="80" rows="5"disabled="disabled"><?php echo $_SESSION["Balises2"]?> </textarea> <br /><br /> <!-- Bouton copier --> <input type="button" class="js-copytextbtn" value="Copier les balises"/> </form> <script> (() => { const button = document.querySelector('.js-copytextbtn'); button.addEventListener('click', () => { const text = document.querySelector('.js-text'); const range = document.createRange(); range.selectNode(text); window.getSelection().addRange(range); try { if (document.execCommand('copy')) { // alert('Le texte a été copié !'); document.location.replace('pagefin.php'); } } catch (err) { alert('Pas possible de copier.'); } window.getSelection().removeAllRanges(); }); })(); </script>
Le seul petit soucis, c'est que le texte copié contient un saut de ligne en début du texte et en fin de texte.

Code : Tout sélectionner

[ADC_START][SDP][ANNULE][00000000][bdceeb19][11/05/22 10:04][Version_2.02][ADC_END]
Merci pour ta patience et ton aide.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mai 2022, 10:11

trim() de PHP pourra solutionner ce problème.

Eléphant du PHP | 213 Messages

11 mai 2022, 14:27

Bonjour two3d,

Je viens de regarder la function trim().
Mais je ne vois pas comment déclarer une variable dans le code JS.
ce code ne fonctionne pas.
const text = trim($text,"\n");

Code : Tout sélectionner

<script> (() => { const button = document.querySelector('.js-copytextbtn'); button.addEventListener('click', () => { const text = document.querySelector('.js-text'); const text = trim($text,"\n"); const range = document.createRange(); range.selectNode(text); window.getSelection().addRange(range); try { if (document.execCommand('copy')) { // alert('Le texte a été copié !'); document.location.replace('pagefin.php'); } } catch (err) { alert('Pas possible de copier.'); } window.getSelection().removeAllRanges(); }); })(); </script>
Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mai 2022, 15:04

trim existe aussi en JS.

La doc est ici : https://developer.mozilla.org

Eléphant du PHP | 213 Messages

11 mai 2022, 16:05

Bonjour two3d,

J'ai tout essayé mais je ne comprends pas la logique, car rien de fonctionne.
dès que je mets trim(), le code ne répond plus.
Merci.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

11 mai 2022, 16:28

trim existe aussi en JS.

La doc est ici : https://developer.mozilla.org
plus précisément :
https://developer.mozilla.org/fr/docs/W ... tring/Trim

Eléphant du PHP | 213 Messages

11 mai 2022, 16:42

Bonjour or1,
Oui j'ai bien lu mais le code ne fonctionne pas

Code : Tout sélectionner

.log(text.trim());

Code : Tout sélectionner

<script> (() => { const button = document.querySelector('.js-copytextbtn'); button.addEventListener('click', () => { const text = document.querySelector('.js-text'); const chaine = document.createRange(); chaine.selectNode(text); window.getSelection().addRange(chaine); try { if (document.execCommand('copy')) { // alert('Le texte a été copié !'); document.location.replace('pagefin.php'); } } catch (err) { alert('Pas possible de copier.'); } window.getSelection().removeAllRanges(); }); })(); </script>
J'ai compris que tout se déroule dans la partie

Code : Tout sélectionner

window.getSelection().addRange(chaine);
J'ai essayé avec

Code : Tout sélectionner

window.getSelection().addRange(chaine.trim()); // pas de réponse window.getSelection(text.trim()).addRange(chaine); // pas de réponse
une simple alerte non plus

Code : Tout sélectionner

var chaine1 = window.getSelection().addRange(chaine); alert.log(chaine1.trim()); // pas de réponse var chaineFin = log(chaine1.trim()); alert(chaineFin);// pas de réponse
Franchement je ne sais plus où le placer le trim()
Merci.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.