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

MFC Discussion :

R�cup�rer une variable globale Javascript dans un CHtmlView


Sujet :

MFC

  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2012
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par d�faut R�cup�rer une variable globale Javascript dans un CHtmlView
    Bonjour,

    Je dispose d'une classe h�ritant de CDialog et affichant une CHtmlView.
    J'arrive effectivement � visualiser une URL gr�ce � ce proc�d�. J'aimerai cependant r�cup�rer une variable globale javascript, pour pouvoir ensuite appeler des m�thodes de cette variable pour changer dynamiquement le contenue de la page HTML. J'ai trouv� quelques liens sur internet pour r�cup�rer des variables javascript, mais �a n'a pas l'air de fonctionner, seulement je n'arrives pas bien � voir ce que je fais mal (ou que je ne fais pas). Voil� en gros ce que j'ai �cris jusqu'� maintenant :

    Test.h
    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
    class Test : public CDialog
    {
    public :
    	Test(CWnd* pParent = NULL);
    	afx_msg BOOL OnInitDialog();
    	bool GetJScript();
    	virtual ~Test_Oleg();
     
    private :
     
    	CHtmlView* m_html;
    	CComPtr<IHTMLDocument2> m_spDoc;
    	CComPtr<IDispatch> scripts;
    	CSplitterWnd m_split;
     
    };
    .cpp
    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
    BOOL Test::OnInitDialog()
    {
    	CDialog::OnInitDialog();
     
    	CRect rect;
    	GetClientRect( &rect );
     
    	m_split.CreateStatic(this, 1, 1);
    	m_split.CreateView(0,0,RUNTIME_CLASS(CHtmlView), CSize(rect.right, rect.bottom), NULL);
     
    	m_html = (CHtmlView*)m_split.GetPane(0, 0);
            m_html->Navigate2("lien_html");
    	m_split.MoveWindow(0,0, rect.right, rect.bottom -40);
    	m_split.ShowWindow(SW_SHOW);
            LPDISPATCH pDisp = m_html->GetHtmlDocument();
     
    	if(pDisp)
    	{
     
    		HRESULT hresult = pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&m_spDoc );
     
    		if(hresult != S_OK)
    		{
    			return FALSE;
    		}
    		if(!GetJScript())
    		{
    			return FALSE;
    		}
    		//Find dispid for given function in the object
    		 CComBSTR bstrMember("DS");
    		DISPID dispid = NULL;
    		 HRESULT hr = scripts->GetIDsOfNames(IID_NULL,&bstrMember,1,
    									 LOCALE_SYSTEM_DEFAULT,&dispid);
    		if(FAILED(hr))
    		{
    		    MessageBox("Can't find DS variable", "", MB_ICONWARNING);
    		    return false;
    		 }
    	}
    }
    la variable DS est repr�sent�e comme ceci dans le html :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <script name="DS" id="DS">
            var DS = new DataSet();
        </script>
    Si quelqu'un a une id�e, ou sait o� est-ce que je m'y prends mal!
    Merci d'avance,
    Guillaume

  2. #2
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2012
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par d�faut
    Re-Bonjour,
    Bon j'ai r�solu ce probl�me ci en bougeant ce code d'InitDialog � plus loin dans le code, (il doit falloir que la page soit finit de charger correctement dans le CHtmlView j'imagine).
    J'arrive donc maintenant � r�cup�rer des variables Javascript et leur contenue, seulement la variable qui m'int�resse est un objet Javascript et j'aimerai invoquer ses m�thodes, pas seulement r�cup�rer une valeur, et je n'arrive pas � trouver comment r�aliser ceci !
    Si quelqu'un � une id�e je suis preneur.
    Merci d'avance.

  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2012
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par d�faut
    Bon j'ai finalement r�ussi � appeler mes m�thodes de mon objet Javascript.
    (Apr�s avoir r�cup�r� un IDispatch de ma variable, il suffit de refaire un GetIDsOfNames avec le nom de la m�thode sur cet objet, puis un Invoke).
    Cependant maintenant mes m�thodes Javascript me lance des exceptions (qui sont bien lanc� puisque mon CHtmlView ouvre une fen�tre pour me dire qu'il y a eu une exception non catch� dans un script), cependant je n'arrive pas � la r�cup�rer du c�t� C++.

    mon appel :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    hr = scripts->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
    contient pourtant bien un pointeur vers une structure EXCEPINFO cens� �tre rempli en cas d'exceptions durant l'appel d'Invoke (hr ne vaut aussi pas DISP_E_EXCEPTION).
    Quelqu'un aurait une id�e du pourquoi du comment ?
    Merci d'avance.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 04/07/2014, 23h31
  2. R�cup�rer une variable de Javascript vers requete Sql dans JSTL
    Par najeh22 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 27/05/2013, 23h29
  3. R�ponses: 2
    Dernier message: 17/11/2008, 15h15
  4. R�cup�rer une variable de session dans une Servlet
    Par Lazarey dans le forum Servlets/JSP
    R�ponses: 6
    Dernier message: 07/03/2008, 11h46
  5. R�cup�rer une variable globale
    Par sourivore dans le forum Flash
    R�ponses: 4
    Dernier message: 03/12/2006, 19h33

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