IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

SAPI, JavaScript et PHP (rien que ca :p)


Sujet :

JavaScript

  1. #1
    Elyadohr
    Invit�(e)
    Par d�faut SAPI, JavaScript et PHP (rien que ca :p)
    Bonjour � tous,

    Je vous explique mon probl�me. Je dois int�grer la voix � une application web, en utilisant SAPI (Speech API by Windows). Premi�re contrainte, utiliser les ActiveX pour pouvoir utiliser SAPI et donc, pas le choix, utiliser IE. On trouve quelques exemples de code en javascript sur le net (pratiquement toujours les m�mes en fait), qui fonctionnent plus ou moins bien. Toujours est il que j'ai r�ussi � faire parler mon ordinateur � un moment donn�.

    Le soucis �tant, que ce que l'on souhaite faire dire � la machine est r�cup�r� d'une BBD, des variables php donc.
    La aussi, on trouve des exemples pour faire du javascript avec du php. Sauf que... ca marche pas !!

    Rien a faire, on a tourn� le probl�me dans tous les sens, ca refuse de dire un traitre mot et comble du d�sespoir, ce qui marchait... ne marche plus. M�me en revenant au code de d�part... Plus moyen de tirer un mot de ma machine.

    [drama] Vous �tes mon dernier espoir ! [/drama]

    Voila mon code, si jamais cela peut vous inspirer une solution... Merci d'avance !

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
        <meta name="language" content="fr" />
        <meta http-equiv="Content-Type" content="html; charset=utf-8" />
    	<meta http-equiv="Content-Script-Type" content="javascript" />
     
    	<title>Talking Page</title>
     
    	<script type="javascript">
                    // check if activeXobject is usable
    		if (window.ActiveXObject) {
    			var VoiceObj = new window.ActiveXObject("SAPI.SpVoice");
    		} else {
    			alert('ActiveX non disponible (seulement sous IE).');
    		}
     
                    function SpeakText (text_to_speech) {
    			if (VoiceObj) {
    				VoiceObj.Speak(text_to_speech, 1);
    			} else {
    				alert ('VoiceObj non défini.');	
    			}
                    }
        </script>
    </head>
     
    <body>
    	<?php
                    $text_php = "This is a test which should be efficient on Internet Explorer.";
            ?>
     
    	<!-- Methode 0 -->
    	<script type="javascript">
    		var text = "This is a test which should be efficient on Internet Explorer.";
    	</script>
     
    	<!-- Méthode 1 -->
    	<?php
                    echo '<script type="javascript">
                    var text1 = "'.$text_php.'";
            </script>';
            ?>
     
    	<!-- Méthode 2 -->
    	<script type="javascript">
    		var text2 = "<?php echo $text_php; ?>";
    	</script>
     
    	<!-- Bouton -->
    	<input onclick="SpeakText(text);" type="button" value="Repeat" />	
    	</body>
    </html>
    Parmis les principaux messages d'erreur re�us :

    • Un compasant ActiveX ne peut pas cr�er un objet.

    • Objet attendu. (pour le bouton)

    • VoiceObj � la valeur Null ou n'est pas un objet. (dans la fonction SpeakText dans le header. Il arrive m�me a me la coller 2 fois � cette ligne.)

    Sinon quand "tout va bien", il me dit que mes variables 'text/text1/text2' ne sont pas d�finies, sachant qu'avant la "m�thode 0" fonctionnait et plus maintenant. Il ne me demande m�me plus d'activer les ActiveX alors que j'y ai droit � chaque fois "normalement".

    En esp�rant ne pas avoir fait trop de fautes et avoir plac� ce message dans le bon forum. ^^'
    Derni�re modification par Elyadohr ; 12/07/2010 � 16h30.

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <script type="text/javascript">
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Elyadohr
    Invit�(e)
    Par d�faut
    Voui, j'avais mis ca... mais ca n'avait pas fait grand chose malheureusement. Maintenant, j'ai droit � l'alerte de la fonction SpeakText... donc VoiceObj n'est pas d�fini...

  4. #4
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
      $text_php = "This is a test which should be efficient on Internet Explorer.";
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta name="language" content="fr" />
      <meta http-equiv="Content-Type" content="html; charset=utf-8" />
      <meta http-equiv="Content-Script-Type" content="javascript" />
      <title>Talking Page</title>
     
      <script charset="utf-8" type="text/javascript">
      function chargement() {
        vox = {};
        // check if activeXobject is usable
        if (window.ActiveXObject) {
          vox.VoiceObj = new window.ActiveXObject("SAPI.SpVoice");
          vox.SpeakText = function  (text_to_speech) {
            this.VoiceObj.Speak(text_to_speech, 1);
          }
        } else {
          alert('ActiveX non disponible (seulement sous IE).');
          vox.SpeakText = function (text_to_speech) {
            alert ('VoiceObj non défini.');
          }
        }
        // Methode 0
        text = "This is a test which should be efficient on Internet Explorer.";
        alert(text)
        //Méthode 2
        text2 = "<?php echo $text_php; ?>";
      }
      </script>
    </head>
     
    <body onLoad="chargement();">
      <!-- Bouton -->
      <input id='btn' onclick="vox.SpeakText(text);" type="button" value="Repeat text" />
      <input id='btn' onclick="vox.SpeakText(text2);" type="button" value="Repeat text2" />
      </body>
    </html>


    A+JYT

  5. #5
    Elyadohr
    Invit�(e)
    Par d�faut
    Arg, j'y ai cru, mais j'ai le regret d'annoncer que ca ne fonctionne pas non plus !
    Cela fonctionnait chez toi ?

    J'ai 3 erreurs :
    • Un composant ActiveX ne peut pas cr�er un objet.
    • 'text ' est ind�fini.
    • 'text2' est ind�fini.

  6. #6
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    tu as quoi comme IE
    car il semble que ton truc ne cr�e pas le SAPI
    tu remplace
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
          vox.VoiceObj = new window.ActiveXObject("SAPI.SpVoice");
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    try {
          vox.VoiceObj = new window.ActiveXObject("SAPI.SpVoice");
    } catch (e) {
     
    alert (e)
    }
    s'il t'affiche un message d'erreur
    c'est qu'il ne peut cr�er l'objet donc il ne fini pas le script et du coup les texte ne sont pas cr��s.

    sur IE 6 FF Safari OmniWeb pas de pb

    A+JYT

  7. #7
    Elyadohr
    Invit�(e)
    Par d�faut
    Alors, j'ai eu droit aux alertes cette fois : [object Error] et le texte � lire...

    J'ai IE8... �a c'est bizarre. Ou alors, c'est mon SAPI qui bugouille ? J'suis sous seven...

    EDIT : Je viens d'installer un truc qui s'appelle IETester, qui est cens� faire tourner "toutes" les versions d'IE pour v�rifier la compatibilit�. Mais j'ai eu beau essayer toutes les versions, de IE3 � 7, j'ai toujours le m�me message d'erreur : [object Error]. Alors le soucis vient peut etre du fait que je sois sous seven et que SAPI n'ai pas la bonne version ou quoi...
    Derni�re modification par Elyadohr ; 06/07/2010 � 15h20.

  8. #8
    Elyadohr
    Invit�(e)
    Par d�faut OnLoad qui s'ex�cute pas en premier...
    Whooch ! Ca fonctionne ! Enfin ! All�luia !!

    Le probl�me venait d'Internet Explorer (je le savais ! �_�) et de ses param�tres de s�curit� ! Un ptit bidouillage, des autorisations accord�es et le tour est jou� ! Au final, s'�tait pas grand chose... c'est fou comme on peut perdre du temps pour rien.

    Maintenant, deuxi�me probl�me : onLoad en dernier ?

    Lorsque j'ins�re ce code dans le site, je souhaiterai qu'il parle � l'ouverture de la page. Je met donc le onLoad="chargement();" dans ma balise body. Rien d'extraordinaire. Sauf que... On entends rien et IE me dit que vox n'est pas d�fini !! Quelques alert bien plac�es et on se rend compte que les scripts de synth�se vocal plac� entre les balises body (dans un div) s'ex�cute avant la fonction chargement ! Le onload s'ex�cute apr�s...

    J'avoue �tre un peu perplexe. Des suggestions ?
    Derni�re modification par Elyadohr ; 13/07/2010 � 16h26.

  9. #9
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    tous script dans le corps du texte HTML (entre <html> et </html>) s'ex�cute durant la construction de la page

    le onload plac� sur la balise body s'ex�cute lui lorsque le document est enfin charg�.

    attention dans onload � this
    lorsqu'on mets un �v�nement sur un tag this est une r�f�rence � l'objet DOM du TAG un onclick su une balise a this sera un r�f�rence sur l'�l�ment A du DOM

    ce n'est pas vrai pour onload this dans ce cas l� est le document et non le body.

    A.JYT

  10. #10
    Elyadohr
    Invit�(e)
    Par d�faut
    Mmh, d'accord. Je n'avais pas bien saisis, pour moi le onload ex�cutait la fonction avant que la page soit charg�e.
    J'ai donc plac� un script pour lancer la fonction chargement juste apr�s la balise <body> et ca fonctionne !

    Merci pour le coup de patte.

Discussions similaires

  1. Est-ce que je peux utiliser les m�mes variables pour javascript et PHP?
    Par sparil dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 01/07/2007, 13h23
  2. R�ponses: 2
    Dernier message: 29/05/2007, 10h55
  3. [PHP-JS] convertir un bout javascript en php ?
    Par Thierry8 dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 23/08/2005, 23h42
  4. [PHP-JS] lien javascript vers php
    Par guttts dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 19/08/2005, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo