• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Funktion von außen in einem IFRAME ausführen

qub

New member
Hallo zusammen,

ich würde gerne eine Tastatureingabe in einem IFrame von außerhalb simulieren.
Mir geht es darum, dass sobald das Popup in dem die Applikation läuft geschlossen wird, die Anwendung automatisch auf pause gesetzt wird.
Bei dem direkten Aufruf der pause Funktion von außerhalb, bin ich leider auch immer wieder gescheitet, weshalb ich nun diesen Umweg über das simulateKeyPress versuche.


Mein bisheriger Aufbau sieht wie folgt aus.


<--MAIN HTML-->

//In der Hauptseite befindet sich die Funktion die eine Tastatureingabe simulieren kann, sowie das Event.

//Hiermit simuliere ich die Tastatureingabe
Code:
jQuery.fn.simulateKeyPress = function(character) {
      jQuery(this).trigger({
           type: 'keypress',
          which: character.charCodeAt(0)
     });
};


//Das Event womit die Eingabe aufgerufen wird
Code:
$(".popupcloser").click(function(){
        $('#application').contents().simulateKeyPress('p');
});




<--IFRAME--> ID=application

//Im Iframe befindet sich eine JS.Funktion pause welche die Anwendung bei dem Tastendruck "P" stoppt.
Code:
keyboard.set(keyboard.p, this.pause);





GROBER HTML AUFBAU

HTML:
<html>
<head>

jQuery.fn.simulateKeyPress = function(character) {
      jQuery(this).trigger({
           type: 'keypress',
          which: character.charCodeAt(0)
     });
};


$(".popupcloser").click(function(){
        $('#application').contents().simulateKeyPress('p');
});

</head>

<body>

<div id="app">
    <span class="popupcloser">X</span>
    <iframe id="application" src="..."></iframe>
</div>

</body>

</html>



Any ideas :confused:
 
Wenn die SOP nicht dazwischenfunkt, was ich hier jetzt nicht erwarten würde, kannst du über document.getElementById("application").contentWindow.irgendeineFunktion() Funktionen in dem iFrame ausführen. Bei dir könnte das in etwa so aussehen:
Code:
var contentWindow = document.getElementById("application").contentWindow;
contentWindow.$(contentWindow).simulateKeyPress("p")
- ungetestet.

PS: .contents() ist für iFrames die falsche Funktion.
PPS: bei JS Problemen ist die Fehlerkonsole immer hilfreich.
 
Hey, vielen Dank für die schnelle Antwort.
Leider hat diese Variante auch nicht funktioniert.

Anscheinend läßt sich der Browser nicht so leicht austricksen.
Denn selbst wenn ich die oben aufgeführte function simulateKeyPress außerhalb vom Iframe genutzt habe, hat das Javascript darauf nicht reagiert.

Ich habe das Problem jetzt anders gelöst, indem ich einfach auf den IFrame verzichte und ein clickevent auf einen Button gelegt habe.
Zwar nicht die schönste Variante aber immerhin funktioniert es jetzt =/.

Generell würde mich eine Lösung jedoch immernoch interessieren, wenn also wer eine gute Idee hat...
 
Hmm... das mit dem .contentWindow sollte eigentlich funktionieren... Welchen Browser verwendest du denn? Hast du einen Testlink, wo wir uns das mal ansehen können? Steht auch wirklich nichts in der Fehlerkonsole?
 
Zurück
Oben