2010-11-26 3 views
0

Ich kann Ereignisse im aktuellen Fenster binden, aber ich benutze TinyMCE, das einen iframe erzeugt, und ich möchte eine Keybind auf das iframe-Fenster setzen können, um ein Control-Sjquery Bindet einen iframe (tinymce)

zu erfassen

ich habe:

$(window.child).keydown(function(e) { 
    if(!args) args=[]; // IE barks when args is null 
    if(e.keyCode == key.charCodeAt(0) && e.metaKey) { 
     callback.apply(this, args); 
     return false; 
    } 
}); 

Aber das funktioniert nicht. Ideen?

Dank

Antwort

0

Es wird zunächst ein Problem des Timings ist, wenn der Iframe zuzugreifen.

Wenn Sie es irgendwo innerhalb des übergeordneten Dokuments binden, kann es sein, dass das Dokument im iframe noch nicht geladen ist. Daher würde ich vorschlagen, es direkt dem onload-event des iframes zuzuordnen, um sicher zu sein, dass es zugänglich ist. Außerdem hängt es vom Browser ab, wie Sie einen Zeiger auf das Dokument erhalten:

<iframe onload="fx(this)" src="some.html" ></iframe> 
<script type='text/javascript'> 
function fx(win) 
{ 
    var doc=win.contentDocument||win.contentWindow.document; 
    $(doc).keypress(
     function(event) 
     { 
     alert(event.charCode||event.keyCode); 
     }); 
} 
</script> 
0
$(document.iframe1.contentWindow.document).keydown(...); 

iframe1 ist ein iframe

+0

iframe1 ist ein ID-Name oder? – AnApprentice

+0

Dieser Fehler "Uncaught TypeError: Kann Eigenschaft 'contentWindow' von undefined nicht lesen" – AnApprentice