Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Candeias

Esconder Código -> Documento .js

Mensagens Recomendadas

Candeias

Boas,

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... :thumbsup:), 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:

<?php
    include "functions.class.php"; 
$dbManager = new DBFactory;
        $arrayPerguntas = array(1, 2, 3, 4);
?>

<SCRIPT LANGUAGE="Javascript"> //variaveis globais

var arrayjava = new Array()
<?php
foreach ($arrayPerguntas as &$line){
	print "arrayjava.push(\"$line\" );"; 
}
?>
</SCRIPT>

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:

<SCRIPT LANGUAGE="Javascript"> //variaveis globais

var arrayjava = new Array()
arrayjava.push("1" );arrayjava.push("2" );arrayjava.push("3" );arrayjava.push("4" );	

</SCRIPT> 

Alguem sabe como posso dar a volta a esta situação?? :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

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 -->
<head>
  <!-- <title>, <meta>, folhas de estilo, etc -->
  <script type="text/javascript" src="vars.js"></script>
</head>

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 :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Candeias

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...

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Não implica nada :)

<?php // ficheiro vars.php

// Esta linha define o MIME-Type "text/javascript"
header("Content-Type: text/javascript");

$a = array(1, 2, 3, 4, 5, 6);

echo "var arrayjava = new Array(";
for ($i = 0; $i < count($a); $i++) {
  echo $i[$a].($i < count($a) - 1 ? ', ' : '');
}
echo ");";

?>

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 :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
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...

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.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Candeias

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? :thumbsup:

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

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).|

Ou entao sempre podes fazer a caixa de texto em Html se isso chegar para ti. :)

Espero ter ajudado...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.