Tengo un CDHTMLDialog, con el cual tengo 2 páginas HTML y un archivo .js con algunas funciones bastante simples.Llamar a una función de JavaScript de C++
Me gustaría poder llamar a una de las funciones JS de mi programa con un simple tipo de datos pasado con ella. p.ej. MyFunc (int). Nada necesita ser devuelto.
Le agradecería cualquier orientación sobre cómo voy sobre esto,
gracias.
Edit: Gracias a CR por su respuesta, y a todos los demás que enviaron ideas allí también.
Algo un poco como esto trabajaron en el extremo (pelado un poco de manipulación de ella para mayor claridad de error):
void callJavaScriptFunc(int Fruit)
{
HRESULT hRes;
CString FuncStr;
CString LangStr = "javascript";
VARIANT vEmpty = {0};
CComPtr<IHTMLDocument2> HTML2Doc;
CComPtr<IHTMLWindow2> HTML2Wind;
hRes = GetDHtmlDocument(&HTML2Doc);
hRes = HTML2Doc->get_parentWindow(&HTML2Wind);
if(Fruit > 0)
{
FuncStr = "myFunc(808)"; // Javascript parameters can be used
hRes = HTML2Wind->execScript(FuncStr.AllocSysString(), LangStr.AllocSysString(), &vEmpty);
}
}
¿te refieres a jscript? Cómo se hace esto depende de qué motor de JavaScript estés usando: spidermonkey, v8, nitro- Pero dices chtml dialogar así que supongo que estás usando jscript? – Breton
Creo que es JScript sí. También he corregido mi error tipográfico, debería ser CDHTMLDialog. – Andrew
Solo por el bien de mantener todo junto, acabo de publicar mi interpretación de esto en [este hilo] (http://stackoverflow.com/questions/2000371/return-value-from-execscriptihtmlwindow2/23319042#23319042). – c00000fd