Usuário com melhor resposta
Javascript não funciona quando chamado com Windows.Open

Pergunta
-
Olá colégas!
Estou com um problema muito estranho.
A minha página funciona perfeitamente quando executo ela diretamente, nela contem um codigo javascript que cria máscaras
para alguns TextBox. Porém essa página é chamada via javascript (Window.Open()) e a function não funciona, é como se ele
não encontrasse o arquivo javascript externo. Alguem tem ideia do que pode estar acontecendo?Eu tenho outro arquivo semelhante que funciona perfeitamente, esta tudo certo, mas quando é chamado pela window.open nada funciona.
meu código javascriptfunction CadastroTarefas() { var B; var idOs = document.getElementById(GetClientId("txtCodigoOS")); //alert(idOs.value); var width = 500; var height = 252; var left = 620; var top = 260; var URL = 'Cadastros/Tarefas.aspx/?idos=' + idOs.value; B = window.open(URL, 'Cadastro de Tarefas', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left + ', scrollbars=no, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no'); }
Meu botão que faz a chamada:
<asp:Button id="btnAddServicos" Text="Adicionar" runat="server" OnClientClick="CadastroTarefas();" />
Página que não funciona:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Tarefas.aspx.cs" Inherits="SisOsOnline.Sistema.Cadastros.Tarefas" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="../../Scripts/Geral.js" type="text/javascript"></script> <script src="../../Scripts/Mascaras.js" type="text/javascript"></script> <script src="../../Scripts/Validacoes.js" type="text/javascript"></script> <link href="../../Styles/Site.css" rel="stylesheet" type="text/css" /> </head> <body style="background-color: ActiveBorder" onload="VerificaFechar();"> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:Panel runat="server" ID="Panel1" CssClass="header"> <asp:Label runat="server" ID="Label2" Text="Tarefa: " CssClass="bold"></asp:Label> <asp:TextBox runat="server" ID="txtTarefa" Width="159px"></asp:TextBox> <asp:Label runat="server" ID="lblValor" Text="Valor:" CssClass="bold"></asp:Label> <asp:TextBox runat="server" ID="txtValor" onkeyup="formataValor(event);" Width="65px"></asp:TextBox> <asp:Button ID="btnAddTarefa" runat="server" Text="Adicionar" OnClick="btnAddServico_Click" Width="88px" /><br /> <asp:Label runat="server" ID="Label1" Text="Atribuir à :" CssClass="header"></asp:Label> <asp:DropDownList runat="server" ID="ddlTecnico" CssClass="bold"> </asp:DropDownList> </asp:Panel> </ContentTemplate> </asp:UpdatePanel>
O TextBox que recebe a mascara é o "txtValor", aonde tem o "onkeyup="formataValor(event);"
Respostas
-
Estranho, sera que o script esta sendo localizado pela pagina mesmo ?
Não lembro nos outro navegadores, mais no Google Chrome use da ferramente de desenvolvedor (Ctrl + Shift + I) e clique sobre aba "Console" e veja se todos os .js estão carregando corretamente, você pode checar o arquivo tambem na aba "Scripts".
Vou deixar aqui registrado uma função que uso de javascript para abrir um popup centralizado:
function PopupCentralizado(url, largura, altura) { var widthAtual = screen.width; var heightAtual = screen.height; var meioWidth = widthAtual / 2; var meioHeight = heightAtual / 2; var alturaJanela = altura / 2; var larguraJanela = largura / 2; var meioHeightCorrigido = meioHeight - alturaJanela - 30; var meioWidthCorrigido = meioWidth - larguraJanela; window.open(url, '', 'height=' + altura + ', width=' + largura + ', top=' + meioHeightCorrigido + ', left=' + meioWidthCorrigido + ',scrollbars=1'); return false; }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Editado Vitor Mendes segunda-feira, 28 de maio de 2012 21:52
- Marcado como Resposta David Rocha DevMovel terça-feira, 29 de maio de 2012 14:40
-
CONSEGUI!
Eu não tenho o Google Chrome aqui, ele esta dando pau e...enfim, não pude usá-lo.
Mas seguindo sua dica de analizar o que estava sendo feito no codigo eu, usando o Firefox, fui em "exibir codigo fonte" e....descobri algo muuito estranho. Vamos lá.Na minha página que nao funciona eu chamo alguns scripts javascript e um um css, o CSS funcionava certo na página porém os javascript (todos) não, no firefox ele cria um link na janela que abre com o codigo fonte, entao eu cliquei e vi que na verdade ele não estava sendo encontrado! É como se o arquivo não estivesse naquela pasta, mas os endereços estavam corretos, exceto por um....o CSS, o caminho real do CSS é esse:
<link href="../../Styles/Site.css" rel="stylesheet" type="text/css" />
Porém na página aparecia assim:
<script src="../../Scripts/Geral.js" type="text/javascript"></script> <script src="../../Scripts/Mascaras.js" type="text/javascript"></script> <script src="../../Scripts/Validacoes.js" type="text/javascript"></script> <link href="../../../Styles/Site.css" rel="stylesheet" type="text/css" />
Viu a diferença? Por algum motivo, que quero muito descobrir, o VS adicionou um diretorio ("../") no caminho do CSS e os scripts javascript não, no codigo fonte do Visual Studio estavam todos com "../../" até o CSS.
Então A SOLUÇÃO foi eu simplesmente adicionar no código fonte mais um "../" e funcionou!
Agora esta certinho, mas ainda não entendi porque o VS fez isso, e ainda mais só com um arquivo, o CSS, se ele corrigiu sozinho a localização dos arquivos ele teria que corrigir de todos, será um bug do VS 2010?Não foi erro meu porque usei o Drag and Drop pra adicionar tanto o CSS quanto os scripts.
Meu codigo agora esta assim:
<script src="../../../Scripts/Geral.js" type="text/javascript"></script> <script src="../../../Scripts/Mascaras.js" type="text/javascript"></script> <script src="../../../Scripts/Validacoes.js" type="text/javascript"></script> <link href="../../Styles/Site.css" rel="stylesheet" type="text/css" />
Valeu!
- Marcado como Resposta David Rocha DevMovel terça-feira, 29 de maio de 2012 14:40
Todas as Respostas
-
Estranho, sera que o script esta sendo localizado pela pagina mesmo ?
Não lembro nos outro navegadores, mais no Google Chrome use da ferramente de desenvolvedor (Ctrl + Shift + I) e clique sobre aba "Console" e veja se todos os .js estão carregando corretamente, você pode checar o arquivo tambem na aba "Scripts".
Vou deixar aqui registrado uma função que uso de javascript para abrir um popup centralizado:
function PopupCentralizado(url, largura, altura) { var widthAtual = screen.width; var heightAtual = screen.height; var meioWidth = widthAtual / 2; var meioHeight = heightAtual / 2; var alturaJanela = altura / 2; var larguraJanela = largura / 2; var meioHeightCorrigido = meioHeight - alturaJanela - 30; var meioWidthCorrigido = meioWidth - larguraJanela; window.open(url, '', 'height=' + altura + ', width=' + largura + ', top=' + meioHeightCorrigido + ', left=' + meioWidthCorrigido + ',scrollbars=1'); return false; }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Editado Vitor Mendes segunda-feira, 28 de maio de 2012 21:52
- Marcado como Resposta David Rocha DevMovel terça-feira, 29 de maio de 2012 14:40
-
CONSEGUI!
Eu não tenho o Google Chrome aqui, ele esta dando pau e...enfim, não pude usá-lo.
Mas seguindo sua dica de analizar o que estava sendo feito no codigo eu, usando o Firefox, fui em "exibir codigo fonte" e....descobri algo muuito estranho. Vamos lá.Na minha página que nao funciona eu chamo alguns scripts javascript e um um css, o CSS funcionava certo na página porém os javascript (todos) não, no firefox ele cria um link na janela que abre com o codigo fonte, entao eu cliquei e vi que na verdade ele não estava sendo encontrado! É como se o arquivo não estivesse naquela pasta, mas os endereços estavam corretos, exceto por um....o CSS, o caminho real do CSS é esse:
<link href="../../Styles/Site.css" rel="stylesheet" type="text/css" />
Porém na página aparecia assim:
<script src="../../Scripts/Geral.js" type="text/javascript"></script> <script src="../../Scripts/Mascaras.js" type="text/javascript"></script> <script src="../../Scripts/Validacoes.js" type="text/javascript"></script> <link href="../../../Styles/Site.css" rel="stylesheet" type="text/css" />
Viu a diferença? Por algum motivo, que quero muito descobrir, o VS adicionou um diretorio ("../") no caminho do CSS e os scripts javascript não, no codigo fonte do Visual Studio estavam todos com "../../" até o CSS.
Então A SOLUÇÃO foi eu simplesmente adicionar no código fonte mais um "../" e funcionou!
Agora esta certinho, mas ainda não entendi porque o VS fez isso, e ainda mais só com um arquivo, o CSS, se ele corrigiu sozinho a localização dos arquivos ele teria que corrigir de todos, será um bug do VS 2010?Não foi erro meu porque usei o Drag and Drop pra adicionar tanto o CSS quanto os scripts.
Meu codigo agora esta assim:
<script src="../../../Scripts/Geral.js" type="text/javascript"></script> <script src="../../../Scripts/Mascaras.js" type="text/javascript"></script> <script src="../../../Scripts/Validacoes.js" type="text/javascript"></script> <link href="../../Styles/Site.css" rel="stylesheet" type="text/css" />
Valeu!
- Marcado como Resposta David Rocha DevMovel terça-feira, 29 de maio de 2012 14:40