2017-06-28 6 views

Répondre

0

Bien que le Touch Manager du composant TWebBrowser inclue une option Zoom dans son ensemble InteractiveGestures, il ne semble pas que vous puissiez contrôler si le zoom est autorisé. (J'ai testé avec une application Android - l'option de zoom n'a pas affecté la possibilité de zoomer la page affichée)

Il appartient au contenu affiché de contrôler le zoom. Si vous allez afficher votre propre HTML dans votre composant (c.-à ne pas permettre la navigation sur le web en général), puis assurer que chaque page a ce qui suit dans son <head>:

<head> 
    <meta name="viewport" id="viewport" content="width=device-width, user-scalable=no, minimum-scale=1, maximum-scale=1" /> 
</head> 

Jetez un oeil à ceci:

How do you disable viewport zooming on Mobile Safari?

+0

Ne pourriez-vous pas également injecter ceci dans le DOM sur n'importe quelle page lors du chargement? –

+0

C'est une idée intéressante. Tout d'abord, je sais que vous pourriez obtenir le DOM en utilisant l'ancien composant TWebBrowser (quand il était seulement windows et il utilisait IE). Mais je ne vois pas comment accéder au DOM en utilisant le nouveau FMX TWebBrowser. En outre, l'événement OnFinishedLoad ne vous dit pas ce qui vient de terminer le chargement; il est déclenché après * chaque * chargement terminé (tout JS et CSS * et * tous les appels AJAX). Il faut donc ajouter de la complexité pour savoir quand injecter ..... –

+0

.....Et en supposant que vous pourriez obtenir au DOM, je pense toujours qu'il est dangereux d'injecter du HTML dans une page étrangère. C'est presque une garantie que vous allez déformer les choses. –

0

Vous devrez modifier les sources FMX.

pour Apple iOS: D'abord, copiez FMX.WebBrowser.Delegate.iOS.pas dans le dossier de votre projet. Que, à la fin de

procedure TWebViewDelegate.webViewDidFinishLoad(webView: UIWebView); 

ajouter les lignes suivantes:

if webView <> nil then 
    begin 
    webView.scrollView.setMinimumZoomScale(1.0); 
    webView.scrollView.setMaximumZoomScale(1.0); 
    webView.scrollView.setZoomScale(1.0); 
    end; 

projet recompiler et vous obtiendrez le navigateur Web qui correspond le contenu sans possibilité de zoom.

Vous pouvez modifier:

class function TNativeWebViewHelper.CreateAndInitWebView: UIWebView; 

vient commenter la deuxième ligne:

// Result.setScalesPageToFit(True); 

De cette façon, vous obtiendrez le navigateur Web avec un contenu non redimensionnées, sans option zoom. Choisissez la meilleure solution pour vos besoins :)

pour Android: D'abord, copiez FMX.WebBrowser.Android.pas dans le dossier de votre projet. Que, à la fin de

procedure TAndroidWebBrowserService.InitUIThread; 

ajouter la ligne suivante:

FJWebBrowser.getSettings.setSupportZoom(false); 

S'il vous plaît noter que j'ai vérifié ce code avec Delphi 10.2 Tokyo. Mais à première vue, le code source de FMX est le même dans cette partie, donc il devrait aussi fonctionner à Berlin.

+0

Cela fonctionnera pour Android.? – test12345

+0

FMX.WebBrowser.Delegate.iOS.pas est pour iOS uniquement. Je vais essayer de trouver une solution similaire pour Android. – zdzichs

+0

J'ai modifié la réponse pour les deux plates-formes mobiles. La solution a fonctionné pour iOS 10.3.2 et Android 5.1.1. Soyez conscient des problèmes avec les nouvelles versions d'Android, adressées par le nouveau patch pour Tokyo. – zdzichs