Whats new? | Login
Cadastre-se | Atendimento | RSS
 
Live chat by Netwatts
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos
Você está em: / canal DevMedia [artigos]
   + DevMedia:   artigos   |   vídeos   |    cursos   |    mais
 
 
Outras seções:
Home 
Entenda o site 
Revistas 
Canais 
Cursos 
Palestras 
Suporte 
Fórum 
Oportunidades 
 Todos os links 

 
  Ir para o Canal DevMedia  
+Canais:
Canal Delphi 
Canal Java 
Canal .net 
Canal Banco de dados 
Canal Mobile 
Canal Ruby on Rails 
Canal PHP 
Canal ASP 
Canal WebDesign 
Canal Engenharia de Software 
Canal Linux 
Canal Scripting 
Canal Outros 
  Todo conteúdo DevMedia 

 
  ver cursos de DevMedia  
+Cursos:
Cursos de Java 
Cursos de .net 
Cursos de Banco de dados 
Cursos de Delphi 
Cursos de Engenharia de Software 
Cursos de Ruby on Rails 
Cursos de ASP 
Cursos de WebDesign 
Cursos de PHP 
Cursos de PalmOS 
Cursos de Linux 
Cursos de Scripting 
  Formações completas 
  Todos os cursos 

 
Canal de conteúdo DevMedia
Revista .net Magazine
Suporte DevMedia
Formacoes completas DevMedia
Palestras de DevMedia
E-books de DevMedia
Downloads de DevMedia
 

+Revistas:
ClubeDelphi 
.net Magazine 
Java Magazine 
webMobile Magazine 
SQL Magazine 
Engenharia de Software Magazine 
  Edições anteriores impressas 
  Todas as revistas 


[Fechar]
Este post está disponível para quem é assinante da .net Magazine ou .net Magazine ou para quem possui Créditos DevMedia.


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 0,00 (assinante) ou R$ 0,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 0,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia


Embutindo JavaScript em Páginas ASP.NET

Embutindo JavaScript em Páginas ASP.NET

JavaScript - Visão Geral

JavaScript, desenvolvido por Netscape Communications e Sun Microsystems, é uma linguagem de programação que podemos usar para adicionar efeitos dinâmicos a nossa página da web. HTML (Hypertext Markup Language) pode somente descrever o modo como os elementos das páginas web (text, forms, hyperlinks, tabelas, e etc [...]) são visualizados - eles não tem uma maneira de ordenar seus comportamentos. A capacidade de inserir scripts de JavaScript em páginas web nos fornece mais controle sobre como as páginas web se comportam.

Linguagens de script semelhantes ao JavaScript proporcionam a web maior poder de processamento e interatividade com o usuário. A utilização do JavaScript é comum em validações de formulário, processo de verificação de todas as informações requeridas e seus formatos - exemplo do formato de data (dd/mm/aaaa).

É importante ressaltar que a interpretação do código ocorre no lado cliente e após a página ter sido completamente baixada do servidor. Isso tem suas vantagens e desvantagens. Uma vantagem é que o JavaScript executa mais rápido que outras linguagens que comunicam direto com o servidor, porém é incapaz de acessar recursos localizados no servidor de que ele origina.

Por tudo, JavaScript não é compilado e independente, o que significa que ele tem que estar embutido em uma página web e ser executado em uma janela de navegador, pois é o navegador que faz interpretação do código JavaScript.

Embutindo Script em uma Página ASP.NET

Devido a importância dos scripts executados no lado cliente para o ASP.NET, não devemos ficar supresos ao ver a dedicação da Framework .NET implementar propriedades que nos permite gerar scripts no cliente a partir do servidor. O ASP.NET usa a nova propriedade "Page.ClientScript" para registrar e colocar as funções JavaScript na página.

Embutindo Blocos de Código no Topo

O método RegisterClientScriptBlock nos permite colocar funções JavaScript personalizadas no topo página - imediatamente após a tag <form>. As construções possíveis com este são:

  • RegisterClientScriptBlock (type, key, script);
  • RegisterClientScriptBlock (type, key, script, addScriptTags);

Onde:

  • type - o tipo de cliente script para registrar. Neste caso, o tipo é a própria página;
  • key - palavra chave que permite traçar as funções programaticamente;
  • script - conteúdo de rotina do JavaScript;
  • addScriptTags - valor booleano que indica se o ASP.NET deve incluir as tags <script> e </script> e inserir o conteúdo de rotina dentro destas.

Veja na prática:

'vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myScript As String = "function AlertHello() { alert('Hello ASP.NET'); }"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", myScript, _
True)
End Sub

//c#
protected void Page_Load(object sender, EventArgs e) {
string myScript = @"function AlertHello() { alert('Hello ASP.NET'); }";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", myScript,
true);
}

<!-- Resultado HTML -->
<form>
<script type="text/javascript">
<!--
function AlertHello() { alert('Hello ASP.NET'); }// -->
</script>
<!-- [conteúdo] -->
</form>

Listagem 01 - Exemplo de como utilizar o método RegisterClientScriptBlock

No exemplo da Listagem 01 nos especificamos o tipo como (vb) Me.GetType() e this.GetType() (c#), a chave "MyScript", o script para inclusão "function AlertHello(){ [...] }" e um valor "true", que permite colocar o script automaticamente dentro das tags <script>.

Quando temos um pouco de JavaScript que está trabalhando com algum controle em nossa página, e demais casos, devemos utilizar o método RegisterStartupScript em lugar de RegisterClientBlock. Por exemplo, nós usamos o seguinte código para criar uma página que inclui um simples controle <asp:TextBox> que contém um valor "Hello ASP.NET" (Listagem 02).

<asp:TextBox ID="TextBox1" Runat="server">Hello ASP.NET</asp:TextBox>

Listagem 02 - Exemplo de controle TextBox

Utilize o método RegisterClientScriptBlock para embutir um script na página que acessa o valor do controle "TextBox1", ilustrado na Listagem 03.

'vb            
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myScript As String = "alert(document.forms[0]['TextBox1'].value);"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "myKey", myScript, _
True)
End Sub

//c#
protected void Page_Load(object sender, EventArgs e) {
string myScript = @"alert(document.forms[0]['TextBox1'].value);";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"MyScript", myScript, true);
}

Listagem 03 - Exemplo de como acessar o controle "TextBox1" com o método RegisterClientScriptBlock

Ao rodar esta página será gerado um erro de JavaScript (Figura 01).


Figura 01 - Erro gerado pela utilização do método RegisterClientScriptBlock

A razão deste erro é que a função JavaScript dispara antes das tags serem recebidas pelo navegador. Portanto, a função JavaScript não encontra "TextBox1" e causa erro.

Por fim, a diferença do método RegisterStartupScript é que ele insere a função JavaScript após todas as tags serem recebidas pelo navegador.

Embutindo Campos Ocultos

Desenvolvedores frequentemente armazenam pequenas quantidades de informações na página, ocultas de um usuário. Se o conteúdo é dinâmico, semelhante a uma variável, o formulário trabalhará com um armazenamento local. O método RegisterHiddenField() é responsável por esse procedimento. A construção possível com este método é:

  • Page.ClientScript.RegisterHiddenField(hiddenFieldName, hiddenFieldInitialValue);

Onde:

  • hiddenFieldName - representa o nome do Hidden, ou melhor, o identificador do controle;
  • hiddenFieldInitialValue - valor inicial do controle;

Veja na prática:

'vb
Page.ClientScript.RegisterHiddenField("submittime", "")

//c#
Page.ClientScript.RegisterHiddenField("submittime", "");

<!-- Resultado HTML -->
<input type="hidden" name="submittime" id="submittime" value="" />

Listagem 02 - Exemplo de como utilizar o método RegisterHiddenField

Para manipular este campo utilize "document.forms[0].submittime.value = 'submit';".

Uma das desvantagens é que o controle Hidden permite alteração de conteúdo via navegador, o que pode tornar a aplicação vulnerável.

Embutindo Blocos de Código na Base

O método RegisterStartupScript não é muito diferente do método RegisterClientScriptBlock. A grande diferença é que o RegisterStartupScript coloca o script na base da página - depois que o navegador receber todas as tags e antes da tag </form>. As construções possíveis com este são:

  • RegisterStartupScript (type, key, script);
  • RegisterStartupScript (type, key, script, addScriptTags);

Estes parâmetros seguem a mesma especificação do método RegisterClientScriptBlock.

Veja na prática:

'vb            
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myScript As String = "function AlertHello() { alert('Hello ASP.NET'); }"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "myKey", myScript, _
True)
End Sub

//c#
protected void Page_Load(object sender, EventArgs e) {
string myScript = @"function AlertHello() { alert('Hello ASP.NET'); }";
Page.ClientScript.RegisterStartupScript(this.GetType(),
"MyScript", myScript, true);
}

<!-- Resultado HTML -->
<form>
<!-- [conteúdo] -->
<script type="text/javascript">
<!--
function AlertHello() { alert('Hello ASP.NET'); }// -->
</script>
</form>

Listagem 03 - Exemplo de como utilizar o método RegisterStartupScript

Embutindo Referência a um Arquivo ".js"

Muitos desenvolvedores colocam o código JavaScript dentro de um arquivo .js. Considerado uma boa prática, um .js é um arquivo global que permite modificar facilmente o código, persistindo em toda aplicação. Podemos registrar arquivo de script em nossa página através do método RegisterClientScriptInclude.  As construções possíveis com este são:

  • RegisterClientScriptInclude (key, url);
  • RegisterClientScriptInclude (type, key, url);

Onde:

  • type - o tipo de cliente script para registrar. Neste caso, o tipo é a própria página;
  • key - palavra chave que permite traçar as funções programaticamente;
  • url - caminho do arquivo;

Veja na prática:

'vb            
Dim myScript As String = "myJavaScriptCode.js"
Page.ClientScript.RegisterClientScriptInclude("myKey", myScript)

//c#
string myScript = "myJavaScriptCode.js"
Page.ClientScript.RegisterClientScriptInclude("myKey", myScript);

<!-- Resultado HTML -->
<script src="myJavaScriptCode.js" type="text/javascript"></script>

Listagem 03 - Exemplo de como utilizar o método RegisterClientScriptInclude

Embutindo Atributo Específico em um Controle

O método RegisterExpandoAttribute registra um par de nome/valor como um atributo personalizado de um controle específico.

Confira: ClientScriptManager..::.RegisterExpandoAttribute

Embutindo Recursos

O método RegisterClientScriptResource registra recurso de script de cliente como objeto Page usando o tipo e o nome do recurso.

Confira: ClientScriptManager..::.RegisterClientScriptResource

Adicionando JavaScript a Controles de Servidor

Podemos adicionar efeitos no ASP.NET adicionando JavaScript inline no atributo. Para permitir um evento JavaScript para um objeto HTML, adicione o evento como um atributo do objeto HTML e informe qual a ação que será executada quando o evento for disparado.

Eventos Inline

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alert('Hello ASP.NET')" />
<asp:Image ID="Image1" runat="server" OnMouseOver="alert('Hello ASP.NET')" />

Eventos Adicionados Dinamicamente

Image1.Attributes.Add("OnMouseOver", "alert('Hello ASP.NET')")
Button1.Attributes.Add("OnClick", "alert('Hello ASP.NET')")

Registrar Identificador dos Controles no Código JavaScript

Dim myScript As String = "<script>document.all." & TextBox1.ClientID & ".focus()</script>"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "myKey", myScript, True)

OU

<!-- [...] -->
 document.all.<%# Textbox1.ClientID %>.focus();
<!-- [...] -->

Referências

  • Professional ASP.NET 2.0 Published by Wiley Publishing, Inc.;
  • ASP.NET 2.0 All-in-One Desk Reference For Dummies® Published by Wiley Publishing, Inc.;
  • ASP.NET Cookbook, 2nd Edition By Michael A. Kittel, Geoffrey T. LeBlond ;
  • ASP.NET Solutions—23 Case Studies: Best Practices for Developers By Rick Leinecker ;
  • JavaScript Professional Projects by Paul Hatcher and John Gosney ;
  • JavaScript™ by Example By Ellie Quigley ;

Estou disponível para qualquer dúvida ou sugestão (kallebe.santos@gmail.com).

Um grande abraço e até a próxima...





KALLEBE LINS
Desenvolvedor .NET, MCTS Web, MCTS Distributed, Técnico em Sistemas Integrados de Gestão Empresarial. Atualmente trabalha como programador .NET (VB e C#), desenvolvendo sistemas para Web com a tecnologia Web Service.
Ver space do autor


Estatísticas deste post:
Visualizações:  18044
Favoritado:  5 vez(es)
 
Conteúdo:
Didática:
Utilidade:
5 0
Feedbacks: 6

  Central de Serviços:
Inclua seu próprio artigo! (ajuda)
Participe! Inclua um comentário
Adicionar este post a Favoritos
Marcar este post como lido/assistido
Inclua uma anotação pessoal (ajuda)
RSS Feeds
Versão para impressão



Participe! Inclua um comentário
[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


[Fechar]

Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
2009 - Todos os Direitos Reservados a DevMedia Group