Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Intento tomar el imput del usuario por consola C++,
- crear un documento.html con javascript,
- aplicarle la siguiente funcion javascript al imput del usuario
- var cifrado = encodeURIComponent("imputDelUsuario");
- escribir el resultado de la funcion javascript en el codigo fuente del documento.html usando
- la funcion javascript document.write(cifrado);
- obtener todo el codigo fuente del documento.html dentro de la variable string cifrar en c++
- y usar find para buscar en el string que contiene el codigo fuente el resultado de la funcion
- en javascript. Esto ultimo aun sin implementar. */
- /*Problemas que tengo:
- 1 - document.write(cifrado) no me escribe el resultado de la funcion
- encodeURIComponent("imputDelUsuario");
- No entiendo por que.
- 2 - Quiero hacer el codigo portable y no conozco ninguna alternativa multiplataforma
- a system ("start Documento.html"); para abrir el navegador por defecto con el documento.
- 3 - Esto forma parte de un proyecto bastante mas grande de librerias que utilizo entre
- otras cosas para obtener geolocalizacion a traves del navegador y guardarlo en C++. Por
- lo que alternativas en C++ que subtituyan la funcion encodeURIComponent() no son viables.
- Tambien intento hacer la libreria para que me permita tener acceso a elementos de escritorio
- desde javascript, como rutas de ficheros, etc.
- 4 - Esta funcion que no incluyo en este codigo tambien me esta dando problemas:
- void abrir_nueva_pestanhaHTML(string url, string mensaje)
- {
- string nuevapestanha1 = "<a target=\"_blank\" href=\"";
- string nuevapestanha2 = "\">";
- string nuevapestanha3 = "</a>";
- ContenidoH = ContenidoH + nuevapestanha1 + url + nuevapestanha2 + mensaje + nuevapestanha3;
- }
- Resulta que en la url del navegador se me anhade toda la direccion del archivo documento.html
- en plan:
- c:\\Carpeta\Carpeta2\documento.html\www.google.com en lugar de: www.google.com
- 5 - Con esta funcion tambien tengo problemas. Hago la llamada asi:
- formateo_textoJS("blue", "18", "Courier, monospace");
- La funcion es:
- void formateo_textoJS(string colorFondo, string tamanhoFuente, string fuenteFamilia)
- {
- string fondo1 = "document.body.style.backgorundColor =";
- string fondo2 = "\";";
- ContenidoJ = ContenidoJ + startScript + fondo1 + colorFondo + fondo2 + finScript;
- salto_lineaJS();
- string tamanho1 = "document.body.style.fontSize =";
- string tamanho2 = "px\";";
- ContenidoJ = ContenidoJ + startScript + tamanho1 + tamanhoFuente + tamanho2 + finScript;
- salto_lineaJS();
- string fuente1 = "document.body.style.fontFamily =";
- string fuente2 = "\";";
- ContenidoJ = ContenidoJ + startScript + fuente1 + fuenteFamilia + fuente2 + finScript;
- }
- En el codigo fuente de documento.html todo es correcto, pero no sucede nada.
- */
- #include <iostream> //Imput y ouput C++
- #include <string> //Contenedor std::string
- #include <fstream> //Manejo de ficheros
- #include <windows.h> //La uso para system start y asi abrir el navegador por defecto.
- using namespace std; //Usar el std por defecto.
- string ContenidoH; //Aqui se almacena el html
- string ContenidoJ; //Aqui se almacena el javascript
- string finScript = "</script>"; //Etiqueta cerrar el script
- string startScript = "<script>"; //Etiqueta abrir el script
- string nombreDelDocumento = "Documento.html"; //Nombre y extension para el archivo a crear.
- static int contadorH = 0; /*Veces que se ejecuta la funcion, lo utilizo para que la
- //primera vez que se abra el archivo Documento.html se borre su contenido, pero se
- //conserve las siguientes veces. */
- string etiquetasHTML; //Aqui guardo las etiquetas basicas + el contenido del usuario.
- string etiquetasJAVASCRIPT;//Aqui guardo las etiquetas basicas + el contenido del usuario.
- string etiquetasHTMLJAVASCRIPT;//Aqui guardo las etiquetas basicas + el contenido del usuario.
- //Funcion para crear el documento con las etiquetas. Esta hecha para poder utilizarla con
- //imput del usuario, pero la cambie para el cifrado. Por eso se veran cosas mal implementadas,
- //y que a priori no hacen nada, o no funcionan. Aun no la revisare hasta finalizar el programa.
- void FuncionCrearHTML(bool HTML, bool JAVASCRIPT, string ContenidoH, string ContenidoJ);
- string cifrar; //Almacena el texto a cifrar.
- int main()
- {
- cout << "Introduce el texto a cifrar:" << endl; //Saca texto y pide entrada.
- getline(cin, cifrar); //Obtiene entrada y guarda en variable.
- string encodeURI1 = "var cifrado = encodeURIComponent(\""; //Javascript para cifrar URI.
- string encodeURI2 = "\");"; //Final del javascript para cifrar URI.
- ContenidoJ = startScript + encodeURI1 + cifrar + encodeURI2 + finScript;//Cadena con la funcion completa.
- string cifradoEnJS = "document.write(cifrado);"; /*Intento que el resultado de la funcion de cifrado
- se escriba en el codigo fuente del documento.html, pero no funciona, solo escribe la funcion.*/
- ContenidoJ = ContenidoJ + "<br>" + startScript + cifradoEnJS + finScript;//Monto la cadena.
- FuncionCrearHTML(true, true, ContenidoH, ContenidoJ); //Llamo a la funcion.
- system ("start Documento.html"); //Llamada al sistema para que abra el documento con el navegador predetermiando.
- int i=0; //iterador.
- ifstream ReadFile(nombreDelDocumento); //Obtiene el documento en ReadFile
- while (!ReadFile.eof()) //Mientras que no se alcance el final del archivo...
- {
- ++i; //aumenta iterador y
- ReadFile >> cifrar; //almacena el contenido del documento en la variable
- cout << "cifrar" << i <<" = " << cifrar << endl; //Imprime el codigo fuente del documento.
- }
- ReadFile.close(); //Cierra el documento.
- cout << cifrar; //Muestra todo el contenido de la variable.
- int pause; //Pausa
- cin >> pause; //Pausa
- return 0; //Retorna 0 a main.
- }
- //Funcion:
- void FuncionCrearHTML(bool HTML, bool JAVASCRIPT, string ContenidoH, string ContenidoJ)
- {
- if (HTML && !JAVASCRIPT) //Si el primer argumento de la funcion es true y el segundo false:
- {
- if(contadorH == 0)//Si no se ejecuto la funcion nunca:
- {
- etiquetasHTML = "<html>\n<body>\n" + ContenidoH + "\n</body>\n</html>";//Mete el imput entre etiquetas
- cin.ignore(); //Limpiar Buffer para evitar errores.
- ofstream WriteFile(nombreDelDocumento);//Obtiene el documento en WriteFile
- WriteFile << etiquetasHTML; //Escribimos en el documento.html
- WriteFile.close(); //Cierro docuemnto.
- cout << "Se creo correctamente tu documento con HTML"<<endl;//muestro texto
- ++contadorH;/*Aumento static contadorH para que no se vuelva a ejecutar el cuerpo de este if.
- ya que se borra el contenido de documento.html abriendo de esta forma el documento.
- Asi borro el contenido en el caso de que exista el documento para poder trabajar con el sin
- conservar datos de otras ejecuciones. */
- }//Cierro if contadorH == 0
- else //Si ya se ejecuto esta funcion anteriormente:
- {
- string etiquetasHTML = "<html>\n<body>\n" + ContenidoH + "\n</body>\n</html>";//Mete el imput entre etiquetas
- cin.ignore(); //Limpiar Buffer para evitar errores.
- fstream miDocumento; //Creo miDocumento del tipo fstream.
- miDocumento.open(nombreDelDocumento, ofstream::app);//Abro el archivo sin borrar su contenido.
- miDocumento << etiquetasHTML;//Meto el imput dentro de etiquetas en el documento
- miDocumento.close(); //Cierro documento.
- ++contadorH; //Esto creo que sobra porque ya no se va ejecutar nunca el if, si ya se ejecuto else.
- cout << "Se creo correctamente tu documento con HTML"<<endl;//muestro texto.
- }//Cierro else de if contadorH == 0
- }//Cierro if HTML && !JAVASCRIPT
- if (!HTML && JAVASCRIPT) //si el primer argumento es false y el segundo true.
- {
- if (contadorH == 0)
- {
- etiquetasHTMLJAVASCRIPT = "<html>\n<body>\n" + ContenidoJ + "\n</body>\n</html>";/*Faltan etiquetas
- javascript que ya van incluidas en ContenidoJ, Para automatizar la funcion, cambiar esto.*/
- cin.ignore(); //Limpiar Buffer para evitar errores.
- ofstream WriteFile(nombreDelDocumento);//Lo mismo que dentro del primer if de la funcion.
- WriteFile << etiquetasJAVASCRIPT;
- WriteFile.close();
- cout << "Se creo correctamente tu documento con JAVASCRIPT."<<endl;
- ++contadorH;
- }
- else
- {
- string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoJ + "\n</body>\n</html>";
- cin.ignore(); //Limpiar Buffer para evitar errores.
- fstream miDocumento;
- miDocumento.open(nombreDelDocumento, ofstream::app);
- miDocumento << etiquetasJAVASCRIPT;
- miDocumento.close();
- ++contadorH;
- }
- }
- if (HTML && JAVASCRIPT)
- {
- if (contadorH == 0)
- {
- string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoH + ContenidoJ + "\n</body>\n</html>";
- cin.ignore(); //Limpiar Buffer para evitar errores.
- ofstream WriteFile(nombreDelDocumento);
- WriteFile << etiquetasJAVASCRIPT;
- WriteFile.close();
- cout << "Se creo correctamente tu documento con HTML y JAVASCRIPT."<<endl;
- ++contadorH;
- }
- else
- {
- string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoH + ContenidoJ + "\n</body>\n</html>";
- cin.ignore(); //Limpiar Buffer para evitar errores.
- fstream miDocumento;
- miDocumento.open(nombreDelDocumento, ofstream::app);
- miDocumento << etiquetasJAVASCRIPT;
- miDocumento.close();
- cout << "Se creo correctamente tu documento con HTML y JAVASCRIPT."<<endl;
- ++contadorH;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement