7
votes

Capturez l'événement Bouton Natif Back à partir de WebView

IM Nouveau sur Webviews et essayer de faire une application à l'aide de celle-ci. J'ai une popup qui est affichée à l'aide de JavaScript. Il a un bouton de fermeture à fermer. En plus du bouton de fermeture, je veux utiliser le bouton de retour natif.

C'est-à-dire que si l'utilisateur clique sur le bouton arrière, ma popup doit être fermée.

Mon doute est-il, faut-il des modifications de l'application native? Ou les visions WebViews convertissent l'action du bouton arrière à certains événements tels que KeyPress que la vision Web peut comprendre?


2 commentaires

Utilisez-vous PhoneGap? Qu'est-ce que vous utilisez exactement?


Pouvez-vous mettre à jour où vous êtes à @goose?


5 Réponses :


1
votes

Si vous utilisez Cordoue, il offre un événement pour suivre le bouton arrière sur les périphériques Android: xxx

Vous pouvez remplacer cet événement et mettre en œuvre votre propre comportement. Autre que cela ne devrait pas être un moyen de suivre l'événement du bouton arrière.


1 commentaires

Je n'utilise pas Cordoue pour ce projet.



2
votes

Je ne sais pas si vous avez la prise en charge de HTML5, mais si oui historique.pustate et historique.onpopstate de l'historique API fera exactement ce que vous voulez. < / p>

Lorsque la fenêtre contextuelle est affichée, utilisez pushstate pour informer le navigateur d'une nouvelle entrée d'historique, comme si la popup était plutôt une nouvelle page.

Ajoutez un écouteur d'événement à historique.onpopstate qui ferme la fenêtre contextuelle, s'il est ouvert.


2 commentaires

Vous suggérez que je devais écouter les événements ci-dessus et effectuer l'action étroite quand elle tire?


Oui! Édité pour élaborer!



2
votes

Vous pouvez essayer de mélanger une question et leurs solutions:

  1. Intercepter le Bouton Back Tap Event dans Android

  2. EXEC une fonction JS à l'intérieur de la webview (de l'extérieur)

  3. que déclenchera un événement dans le document

  4. Écoutez cet événement à l'aide de document.addeventlistener et fermez ici votre boîte de dialogue / alerte


0 commentaires

1
votes

En cliquant sur Backbutton fermerait votre mode de vue qui montre le modal.

Je suppose que vous ne voulez pas que cela se produise, et fermez simplement le modal JavaScript. P>

Oui, vous devez modifier votre code natif. P>

On native backbutton click # your native code to intercept the back button

if your modal is open: 
# there are multiple options here
# first strategy 
#   let javascript inform native side when it opens/closes popup 
#   native just needs to check the status he has
# second strategy
# native asks javascript if he has a modal open
# this is a bit tricky because native can't get a return value from javascript
# native asks javascript to tell native if he has a modal open (native->javascript + javasciprt -> native two function calls)
# native checks what javascript just said

    close the modal
    # this is easy, ask javascript to close it.


0 commentaires

1
votes

Pour aider davantage ce que Laufoo a déclaré: xxx


0 commentaires