none
Javascript não funciona quando chamado com Windows.Open RRS feed

  • 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 javascript

    function 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">
                                &nbsp;&nbsp;<asp:Label runat="server" ID="Label2" Text="Tarefa: " CssClass="bold"></asp:Label>&nbsp;
                                <asp:TextBox runat="server" ID="txtTarefa" Width="159px"></asp:TextBox>&nbsp;&nbsp;&nbsp;
                                <asp:Label runat="server" ID="lblValor" Text="Valor:" CssClass="bold"></asp:Label>&nbsp;
                                <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);"


    segunda-feira, 28 de maio de 2012 20:45

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/


    segunda-feira, 28 de maio de 2012 21:07
  • 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!






    terça-feira, 29 de maio de 2012 14:35

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/


    segunda-feira, 28 de maio de 2012 21:07
  • 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!






    terça-feira, 29 de maio de 2012 14:35