Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Candeias

Esconder Código -> Documento .js

Recommended Posts

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

Share this post


Link to post
Share on other 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 :)

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 :)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
pwseo

Se é para ficar seguro, não pode vir para o lado do cliente, tem de ser tratado do lado do servidor.

Ora nem mais :thumbsup:

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites
Candeias

hmm..obrigado.

Já agora como assim.. "fazer a caixa de texto em Html.." ?

Obrigado

Share this post


Link to post
Share on other sites
zukinha

tenta assim:

<a href="google.pt(exemplo)">Clika aki para fazer peskisa no google(exemplo)</a>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.