Page 1 sur 2

JS ne fonctionne pas sur IIS

Posté : 05 mai 2022, 16:44
par wisefun77
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.

Re: JS ne fonctionne pas sur IIS

Posté : 06 mai 2022, 00:19
par two3d
"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 = ;)

Re: JS ne fonctionne pas sur IIS

Posté : 06 mai 2022, 09:10
par wisefun77
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.

Re: JS ne fonctionne pas sur IIS

Posté : 06 mai 2022, 09:33
par two3d
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é ;)

Re: JS ne fonctionne pas sur IIS

Posté : 06 mai 2022, 12:36
par wisefun77
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

Re: JS ne fonctionne pas sur IIS

Posté : 06 mai 2022, 15:47
par two3d
Il faut surtout voir la doc pour savoir comment ça fonctionne : https://developer.mozilla.org/fr/docs/W ... on/replace ;)

Re: JS ne fonctionne pas sur IIS

Posté : 10 mai 2022, 09:30
par wisefun77
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

Re: JS ne fonctionne pas sur IIS

Posté : 10 mai 2022, 10:26
par two3d

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 10:05
par wisefun77
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.

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 10:11
par two3d
trim() de PHP pourra solutionner ce problème.

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 14:27
par wisefun77
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

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 15:04
par two3d
trim existe aussi en JS.

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

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 16:05
par wisefun77
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.

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 16:28
par or 1
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

Re: JS ne fonctionne pas sur IIS

Posté : 11 mai 2022, 16:42
par wisefun77
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.