Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wie in Funktion als Argument übergebene Funktion aufrufen -> new Function?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Wie in Funktion als Argument übergebene Funktion aufrufen -> new Function?

    Guten Morgen,
    Ich versuche mich schon eine ganze Weile an folgendem:

    Code:
    // So klappt es - aufgerufen aus iframe mit   parent.getheight() ;
    function getheight() {
    	 y = $(window).height() ;
                 $f = $("#ifr");
    
        $f[0].contentWindow.show_map_imsa(y) ;
    }
    Jetzt will ich der Funktion den Namen der auzurufenden Funktion als Argument übergeben:
    Code:
    // So klappt es leider nicht - aufgerufen aus iframe mit  
    // parent.getheight('.contentWindow.show_map_imsa ');
    
    function getheight(fu) {
     y = $(window).height() ;
                 $f = $("#ifr");
    // 
    fbody = $f[0] + fu  + '(' + y + ');' ;
    	     sendheight = new Function(null , fbody ) ;
    	    	sendheight();	
    
    // ..so auch nicht 
    eval ( $f[0]   + fu + '(' + y +')'  )  ;
    
    }
    Wo liegt mein (Denk-)Fehler?

    Schönes Wochenende Krishan

  • #2
    Übergib doch einfach die function selbst als Argument (callback):

    PHP-Code:
    function bar() {
      
    console.logarguments );
    }

    function 
    foonext ) {

      
    next(1)
      
    next.callnull123 )
      
    next.applynullarguments )
    }

    foobar)
    '0'}
    '0'123 }
    '0': [Function: bar] } 
    Grüße

    Basti
    I like cooking my family and my pets.
    Use commas. Don't be a psycho.
    [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

    Kommentar


    • #3
      Besten Dank rudygotya für Deine Antwort,

      Deinen code kann ich bis jetzt leider nicht nachvollziehen/auf mein Problem anwenden.
      Ich dacht ja (wohl zu naiv) das ganze wäre mit einem Einzeiler nach folgendem Muster erledigt;
      Code:
      // pseudo-code
      $fr[0] + als Argument übergebenen Funktionsnamen + (in der Funktion ermittelte Höhe ) ;
      Ich will ja 'einfach' nur einen Teil der Anweisung als Variable notieren.

      Gruß Krishan

      Kommentar


      • #4
        Ich hab jetzt noch mal ein bisschen recherchiert und probiert:
        Das Problem war wohl, das die Variable $fr
        Code:
        var $fr = $("#ifr");
        type = object ist.Wenn ich sie der aufzurufenden Funktion als string übergebe funktioniert es, wie gewünscht:
        Code:
        // aufgerufen aus iframe mit parent.getheight('.contentWindow.show_map_imsa');
        
        function getheight(fu) {
        		var y = $(window).height() ;
        	   var $fr = $("#ifr");
              var func =  '$fr[0]'+fu+'('+y+')' ;
        // übergebene Funktion im iframe aufrufen
          eval (func) ;
        }
        Gruß Krishan

        Kommentar


        • #5
          Hallöchen,

          a) ist dein Code grauenhaft formatiert und b) verstehe ich immer noch nicht was du da eigentlich tust.

          Viele Grüße,
          lotti
          [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

          Kommentar


          • #6
            Zitat von lottikarotti Beitrag anzeigen
            Hallöchen,

            a) ist dein Code grauenhaft formatiert
            was soll ich dazu jetzt sagen, außer, das ich Besserung gelobe.
            und b) verstehe ich immer noch nicht was du da eigentlich tust.
            Kurz gesagt:
            Ich rufe aus einem iframe eine Funktion im Eltern-Dokument auf, welche ihrerseits eine bestimmte Funktion im iframe aufruft.
            Hintergrund:
            Ich benutze zur Terminanzeige jquery ui dialog-Boxen , in denen ich in diesem Fall eine google-maps Karte per iframe einbinde. Die dialog-box will ich entsprechen der Fenstergröße dimensionieren, aber aus den dialog-Boxen aufgerufen gibt mir $(window).height() die Höhe des gesamten Dokuments zurück und nicht die 'viewport'-Höhe.
            Aus dem Eltern-Dokument aufgerufen gibt $(window).height() die korrekte Fensterhöhe zurück.
            Deshalb rufe ich die Funktion: getheight(fu) im Eltern-Dokument auf - die korrekte Höhe wird ermittelt - die Funktion zur Anzeige der Karte: show_map_imsa() wird mit der Höhe als Argument im iframe aufgerufen.

            Ich hoffe,das ich den 'Sachverhalt' jetzt nachvollziehbar beschrieben habe.

            Gruß Krishan

            Kommentar

            Lädt...
            X