setFocus unter Crome

schlawiner

Mitglied
Hallo,

ich habe folgendes Problem:
Code:
<object id="iframe" data="Link" onclick="setFocus()"></object>

<script type="text/javascript">
function setFocus()
{
var iframe = document.getElementById("iframe");
iframe.focus();
console.log("setFocus activated");
}

window.setInterval(setFocus, 300); // reload focus
</script>

funktioniert unter Firefox, aber leider nicht unter Crome und Edge, hat hier jemand eine Idee ?
 

basti1012

Erfahrenes Mitglied
Bei dem Code verstehe ich nicht ganz, was du vorhast.
Focus setzt man normalerweise auf Input,a,label,textarea,select Felder oder sowas.
Aber auf Objekt ??.

Was willst du erreichen?
Den Code so getestet wie du ihn gepostet hast, steht alle 300 Millisekunden
console.log("setFocus activated");

Also das was du wohl erreichen willst , und ich nutze Chrome
 
Zuletzt bearbeitet:

schlawiner

Mitglied
Den Code benutze ich um einen Java VNC viewer via Iframe ein zu binden. Das Problem sind hier im allg. die Browser. Du bekommst das Bild kannst aber keine eingaben ohne die Focus Funktion setzen.

Ich habe das Problem mit einer Browsererkennung gelöst.

Für Firefox und Mac/safari brauchst du eine Variante, Für alle restlichen Browser wieder eine andere.

Code:
if((navigator.userAgent.toLowerCase().indexOf("firefox") > -1) || (navigator.platform.toLowerCase().indexOf("mac") > -1) && (navigator.userAgent.toLowerCase().indexOf("safari") > -1)){
    function setFocus()
    {
        var iframe = document.getElementById("iframe");
        iframe.focus();
    }
    window.setInterval(setFocus, 100);
} else {
    function setFocus()
    {
        var iframe = $("#iframe")[0];
        iframe.contentWindow.focus();
    }
    $(document).ready(function()
    {
        $("#iframe").click(function()
    {
    setTimeout(setFocus, 100);
    return false;
    });
});
}
 

Neue Beiträge