Esconder Código -> Documento .js - Javascript - Portugal-a-Programar
Esconder Código -> Documento .js
By Candeias, May 13, 2010 in Javascript
Candeias 0
Já procurei nos tutoriais aqui do forum em Javascript mas não encontrei nada explicito acerca de páginas com a extensão .js
Tenho uma página com javascript, e queria simplesmente esconder esse mesmo código. Uma vez que não é possível esconder o mesmo (axu eu... ), pensei em colocar numa pagina .js, mas não faço a mínima ideia se é possível passar valores para esse pagina, como se fossem parâmetros de entrada, ou mesmo qual é a formatação do documento .js.
Tenho um array em php na minha página, e preciso de replicar esse array para um array javascript para poder aceder na página.
Neste momento tenho algo do género:
include "functions.class.php";
$dbManager = new DBFactory;
$arrayPerguntas = array(1, 2, 3, 4);
<SCRIPT LANGUAGE="Javascript"> //variaveis globais
var arrayjava = new Array()
foreach ($arrayPerguntas as &$line){
print "arrayjava.push(\"$line\" );";
Neste momento tenho a um array em javascript--> $arrayjava
Até aqui tudo bem, mas quando vamos ao código fonte da página fico com algo do género:
arrayjava.push("1" );arrayjava.push("2" );arrayjava.push("3" );arrayjava.push("4" );
Alguem sabe como posso dar a volta a esta situação??
Não sei se percebi muito bem o que queres fazer, mas se percebi, podes colocar todo o teu código num ficheiro .js separado.
// ficheiro vars.js
var arrayjava = new Array(1, 2, 3, 4, 5, 6);
var outra_var = "isto";
e no ficheiro html incluis a seguinte declaração para fazer load do script:
<!-- ficheiro index.html -->
<!-- <title>, <meta>, folhas de estilo, etc -->
Desta forma, no index.html ficará apenas uma referência ao vars.js, e todo o código Javascript ficará isolado nesse ficheiro.
Devo recomendar-te também que leias um pouco sobre javascript, nomeadamente no que diz respeito à utilização de variáveis globais e funções anónimas... Não precisa de ser já, mas pode evitar-te problemas futuros, e acima de tudo irá dar-te uma ideia melhor de como gerir variáveis num script
Entretanto já consegui entender a lógica desses ficheiros .js...
Mas não posso utilizar dessa forma por uma razão: o array que contem a informação original é um array em php ($arrayPerguntas) que preciso de passar para um array javascript...
Essa solução implica que o array original esteja já em javascript. Não consigo passar o array php para um array javascript sem que seja mostrada a informação do array no código fonte...
Não implica nada
<?php // ficheiro vars.php
// Esta linha define o MIME-Type "text/javascript"
echo "var arrayjava = new Array(";
echo $i[$a].($i < count($a) - 1 ? ', ' : '');
E depois, no teu index.html, fazes:
<script type="text/javascript" src="vars.php"></script>
Um ficheiro php é interpretado e gera texto.. esse texto normalmente é HTML, mas pode ser outra coisa qualquer A solução que te dei faz com que esse php gere o javascript e por isso o vars.php passa a poder ser usado como um ficheiro .js.
Outros métodos permitir-te-iam até mesmo obrigar o php a processar os ficheiros .js e poderias incluir código php nesses .js, tal como incluis nos .php.
Mas isso fica para outra altura
EDIT: Pelos vistos queres mesmo esconder completamente a informação... e isso é impossível
O teu problema é o conteúdo do array em si? Se sim, estás lixado, mas com "f"...
Eventualmente, para não mostrares logo o array no código, podias ir buscá-lo depois da página carregada, via AJAX; no entanto, também não te adiantava de muito, porque o javascript corre do lado do cliente, e não do servidor - logo, é muito fácil colocar um breakpoint no javascript e fazer inspect à variável que contém o array: voilá, temos os dados.
Se é para ficar seguro, não pode vir para o lado do cliente, tem de ser tratado do lado do servidor.
Não tenho muitos conhecimentos de desenvolvimento web...
O que preciso ao concreto de fazer é pegar em cerca de 30 registos de uma base de dados, e deixar que o utilizador veja esses mesmos registos da seguinte maneira:
existe uma tabela com uma linha, 30 colunas, e o utilizador ao clicar numa das celulas dessa tabela visualize o registo correspondente numa caixa de texto (por exemplo...).
O que eu estou a fazer nesse exemplo que fiz foi obter para a variável $arrayPerguntas todas as perguntas. E agora no meu ficheiro externo tenho uma função getPerguntaNum(num) que retorna a respectiva pergunta do array e mostra...
Qual seria então a outra solução de fazer isto?
Não percebo muito bem a necessidade de ocultar a informação se irás disponibilizá-la de seguida quando o utilizador selecciona uma das células.
O mais lógico provavelmente seria teres um php que aceitasse um parâmetro GET que, após validação adequada, permitisse que tu fosses directamente à base de dados buscar a pergunta para a célula seleccionada.
Desvantagem: de cada vez que escolhesses uma célula, estaria envolvido um refresh (ou então utilizas AJAX).
Mas volto a dizer... não estou a perceber bem o problema de ter a array à vista... Não estaria lá nada mais do que aquilo que seria mostrado quando o utilizador clicasse nos sítios certos.
Nao sei se consigo ajudar,
Eu ja me deparei com um problema parecido, o que fiz foi criar uma hiperligação, no meu caso foi para automoveis, na tabela aparecia as caracteristicas principais ex:
Audi | A4 | Gasoleo | 2.0 | 5 | 2006 | Descrição(aqui é uma himperligação que vai para outra pag ond aparece a foto do veiculo com os extras e essas coisas).|