Datei öffnen Dialog, öffnen ohne Button


strukturart

Erfahrenes Mitglied
#1
Hallo,

ich schreibe gerade mein erstes Html5/JS App für KaiOs.
Da ich in diesem App ganz auf einen Mauszeiger verzichten möchte,
wird alles über das Keypad gesteuert.

Nun möchte ich den Datei öffnen Dialog mittels einer function() öffnen.
Drückt man z.B. auf die Nr. 5 auf dem Keypad wird diese ausgeführt.

Ist das möglich
oder wegen der Sicherheit nicht ?

Gruss John
 

basti1012

Erfahrenes Mitglied
#2
meint du sowas ?
Javascript:
<script>

document.getElementsByTagName('body')[0].addEventListener("keypress", KeyCode);

function KeyCode(event) {
 if(event.which==53 || event.which==13){// Taste 5  oder ENTER
alert(event.which+' Taste gedrückt')
 }
}


</script>
 

Sempervivum

Erfahrenes Mitglied
#6
Ich glaube, jetzt verstehe ich es besser, dies ist das Kernproblem:
es geht mir um darum ohne input field einen Datei öffnen Dialog zu starten.
Wie es ohne input geht, weiß ich nicht, aber Du könntest mit der jQuery-Funktion trigger() auf das Input einen Klick simulieren, dann sollte sich der Datei-Öffnen-Dialog öffnen. Ob dieses OS das zulässt, müsste man testen.
 

basti1012

Erfahrenes Mitglied
#8
Ist ja schön wenn du ein Lösung gefunden hast die Funktioniert. Könntestdu den Code mal posten ?Weil deine Lösung interesiert mich und vieleicht kann man anhand der Lösung auch noch nee andere Lösung finden
 

strukturart

Erfahrenes Mitglied
#9
Damit liste ich alle .json Dateien
Code:
function startFinder(search_string,MapOrTrack)
{
    map_or_track = MapOrTrack;
    i = -1;
    //get file list
    var finder = new Applait.Finder({ type: "sdcard", debugMode: true });
    finder.search(search_string);
    $("div#finder").empty();

    finder.on("searchBegin", function (needle)
    {
        alert("search startet")
    });

    finder.on("searchComplete", function (needle, filematchcount)
    {
    if(filematchcount == 0)
    {
        $('div#finder-error').css('display','block')
        $('div#finder-error').text('no file found')
        setTimeout(function()
        {
            $('div#finder-error').css("display","none");
        }, 4000);
    }

        if(filematchcount > 0)
    {
        $('div#finder').css('display','block')
        $('div#finder').find('div.items[tabindex=0]').focus();
    }


    });

    

    finder.on("fileFound", function (file, fileinfo, storageName)
    {
        finderNav_tabindex++;
        $("div#finder").append('<div class="items" tabindex="'+finderNav_tabindex+'">'+fileinfo.name+'</div>');
        $('div#finder').find('div.items[tabindex=0]').focus();


    });

    


}





function addGeoJson()
{
if ($(".items").is(":focus")) {


    var finder = new Applait.Finder({ type: "sdcard", debugMode: true });
    finder.search($(document.activeElement).text());
    

    finder.on("fileFound", function (file, fileinfo, storageName)
    {
    //file reader

    var mygpx="";
    var reader = new FileReader();




    reader.onerror = function(event)
    {
        alert('shit happens')
        reader.abort();
    };


    reader.onload = function(event)
    {

    };

    reader.onloadend = function (event)
    {

        if(myLayer)
        {
            L.removeLayer(myLayer)
        }

            
        mygpx = event.target.result
        var myLayer = L.geoJSON().addTo(map);
        myLayer.addData(JSON.parse(mygpx));
        
        
    };


    reader.readAsText(file)

    $("div#finder").empty();
    $('div#finder').css('display','none');
    


    });




}

}
 

ComFreek

Mod | @comfreek
Moderator
#10
Allgemein geht das mit JavaScript im Browserkontext aus Sicherheitsgründen natürlich nicht. Aber das ist kein Problem, da der OP sowieso spezifisch für KaiOS entwickelt und es da anscheinend Zugriff auf Dateien gibt.