Problem mit Google Chrome und Javascript. Guru benötigt!

ich habe ein seltsames problem nur in Chrome mit einem iframe aber die Arbeit in allen anderen gängigen browser.

das problem: Wenn ich in dem IFRAME und dann drücken Sie die Taste, um zu senden, es funktioniert gut, den Fokus wieder auf das IFRAME und der cursor BLINKT.

Aber wenn ich tippe und dann drücken Sie ENTER zum aufrufen des event-handler-Funktion, die den Fokus Rücken, sondern die cursor verschwinden. Und dann, wenn Sie gehen in ein anderes Fenster und dann zurück den cursor angezeigt. Dies geschieht nur in Chrome. Ich habe die Beispiel-Seite, um zu zeigen, das problem in Aktion. Klicken Sie auf den link unten, um zu sehen.

UPDATE: ich habe den code auch hier unten

    var editorFrame = 'myEditor'

function addFrame() {

    var newFrame = new Element('iframe', {
        width: '520', 
        height: '100',
        id: editorFrame,
        name: editorFrame,
        src: 'blank.asp',
        class: 'myClass'
    });

    $('myArea').appendChild(newFrame);

    window.iframeLoaded = function() {
        //this is call-back from the iframe to be sure that is loaded, so can safety attach the event handler

        var iframeDoc, UNDEF = "undefined";
        if (typeof newFrame.contentDocument != UNDEF) {
            iframeDoc = newFrame.contentDocument;
        } else if (typeof newFrame.contentWindow != UNDEF) {
            iframeDoc = newFrame.contentWindow.document;
        }
        if (typeof iframeDoc.addEventListener != UNDEF) {
            iframeDoc.addEventListener('keydown', keyHandler, false);
        } else if (typeof iframeDoc.attachEvent != UNDEF) {
            iframeDoc.attachEvent('onkeydown', keyHandler);  
        }
    };
}

function resetContent() 
{   
    var myIFrame = $(editorFrame);

    if (myIFrame) myIFrame.contentWindow.document.body.innerHTML='';
}

function setEditFocus() 
{

    var iFrame = document.frames ? document.frames[editorFrame] : $(editorFrame);
    var ifWin = iFrame .contentWindow || iFrame;

    ifWin.focus();

}

function send()
{
    resetContent();
    setEditFocus(); 
}

function keyHandler (evt) {

    var myKey=(evt.which || evt.charCode || evt.keyCode)

    if (myKey==13)  {

        if (!evt) var evt = window.event;

        evt.returnValue = false;

        if (Prototype.Browser.IE) evt.keyCode = 0;

        evt.cancelBubble = true;

        if (evt.stopPropagation) evt.stopPropagation();

        if (evt.preventDefault) evt.preventDefault();

        send();

    }
}

In der HTML-Seite

<body onload="addFrame()">

<div id="myArea"></div>
<input id="myButton" type="button" value="click me to send [case 1]" onclick="send()">

Zu machen, mehr einfach zu verstehen, das problem habe ich erstellen Sie eine bestimmten Seite das problem zu reproduzieren mit voller Beispiel und Quelle enthalten.

Können Sie hier einsehen bei der Verwendung von Google Chrome:
Beispiel für das problem

Ich brauche wirklich Eure Hilfe, weil ich versucht dieses problem zu lösen, für viele Tage kein Glück. Und alle Vorschläge, Tipps und Lösung gut akzeptiert.

Vielen Dank im Voraus.

  • Bitte erstellen Sie ein minimal-Beispiel, das reproduziert sich Ihrem eigentlichen problem, der ist klein genug, um Sie hier einfügen. Es ist schwer zu sehen, was Sie zu erreichen versuchen und was dein problem ist. 🙂
  • Ops, ich war aber besser sehen das problem in der Aktion nicht? Btw ich poste hier den code zu 🙂
  • das ist ziemlich hart -- OP gemacht ein sehr gutes Beispiel, das veranschaulicht das problem.
  • In diesem Fall, wo ist Ihre Antwort? 🙂 Wenn das Beispiel entfernt wird, ist diese Frage bedeutungslos sein. Auch das Beispiel ist viel zu Komplex, um leicht verständlich zu sein.
  • ich habe auch den code hier, aber sicher werden mehr leicht zu finden Sie auf der Seite für das problem reproduzieren. Ich denke, diese Website ist auch voll von Menschen, die helfen können, auch wenn scheinbar kann Komplex sein, wenn Nein, warum poste ich hier ?
InformationsquelleAutor Luka Milani | 2010-08-29
Schreibe einen Kommentar