Announcement

Collapse
No announcement yet.

JavaScript Variablen in Asp.Net

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JavaScript Variablen in Asp.Net

    Hi allerseits,

    ich will per Button eine Seite öffnen, vorher aber prüfen, ob diese Seite nicht schon offen ist
    Dazu verwende ich Codebehind folgenden Code, um beim erstmaligen öffnen der Seite, diese einer Variable mitzugeben:

    ("<script>var win;win=window.open(""" & s_absende_link & """);</script>")

    In der aspx Seite löst dieser Button zusätzlich folgende Javascript-Function aus:

    function check_SSI_window()
    {
    if ((isDefined("win")) && (win.closed == false)){
    //Objekt Win existiert und das Fenster ist noch offen:
    document.getElementById('hdnWin').value= "offen";
    }
    else{
    //Fenster nicht offen:
    document.getElementById('hdnWin').value= "geschlossen";
    }
    }

    Wenn ich das erste Mal den Button drücke, checkt er schön brav dass es noch nicht definiert ist und öffnet mir die Seite.
    Beim zweiten Mal klappt auch alles wunderbar, er checkt das "win" definiert ist und checkt auch, dass win.closed FALSE ist =)

    Jz versteh ich aber absolut nicht, wenn ich dann das dritte Mal aufn Button drücke, er mir plötzlich sagt, dass "win" UNDEFINED ist ?!?
    Obwohl das Fenster im Hintergrund noch offen ist !

    Bin echt dankbar für eine Lösung

    MFG

  • #2
    1. Es gibt keine browserunabhängige JavaScript-Lösung deiner Aufgabe.
    2. Poste deine Code komplett, nur dann kann man die Ursache feststellen
    3. Hier ist die Korrektur (IE/FF, VS 2010):
    Code:
     <%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false"
        CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>
    
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
        <script language="javascript" type="text/javascript">
    // <![CDATA[
    
            var win = null;
    
            function Button1_onclick() {
    
                if (win == null) {
    
                    document.getElementById('hdnWin').value = "war geschlossen. Geöffnet";
                    win = window.open("http://www.google.de");
                }
                else {
                    if (win.closed == false) {
                        //Objekt Win existiert und das Fenster ist noch offen:
                        document.getElementById('hdnWin').value = "noch geöffnet offen";
                    }
                    else {
                        document.getElementById('hdnWin').value = "war geschlossen. Geöffnet";
                        win = window.open("http://www.google.de");
                    }
                }
            }
    
    // ]]>
        </script>
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    
        <p>
    
            <input id="Button1" type="button" value="button"  onclick="return Button1_onclick()" /><input 
                id="hdnWin" type="text" /></p>
      
    </asp:Content>
    P.S. Wozu brauchst du die Variable? Reicht windows.close nicht? Versuch mal die Routine für andere Browser mit "onUnload" - Ereignis zu ergänzen.
    Zuletzt editiert von vadym voytas; 28.08.2011, 00:55.
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      Schau Dir doch auch mal JQuery an das behandelt eigentlich sämtliche Browserinkonsistenzen. Ohne würde ich heutzutage nicht mehr entwickeln.

      Comment

      Working...
      X