托管HTML内容的图形用户界面中的元素。对于Android,请查看android-webview标签。对于iOS,请查看uiwebview或wkwebview。
我正在使用 WKWebView 在 Swift 3+ 应用程序中打开网页。 我没有使用故事板或 XIB。 当我的 webview 加载时,它会隐藏运营商信息、蜂窝网络信号强度指示器(做...
Leaflet webview:Javascript/HTML setView 地理位置错误
我正在尝试在 Android Studio WebView 中显示远程 HTML 网页。该网页显示了某个位置的一些 2D 地理点数据在用户位置上的缩放,如下所示: var map = L.map('地图...
我有3个网络视图,显示来自3个搜索引擎的搜索字符串的查询结果。如果显示谷歌,我在底部有雅虎和询问按钮。当我单击其中任何一个时,我都会得到结果。 .
无法使用 flutter_inappwebview 将捕获的图像保存到图库
无法使用 flutter_inappwebview 将捕获的图像保存到图库 技术 版本 颤振版本 2.0.6 flutter_inappwebview 插件版本 5.3.2 安卓版本 8,9,10,11
我正在开展我的业余项目,在网络视图中显示嵌入的推文。一些推文包含视频。在 iOS 上,当我单击蓝色播放按钮时,它会全屏启动视频
React Native Webview:动态播放 HTML5 视频有时会导致黑屏,只有音频而没有图片,需要用户交互
我正在使用 expo-react Native 构建一个应用程序来动态播放视频,但有时只播放音频但没有视频。我必须点击屏幕才能看到图片。 在 Android TV 中它可以工作...
如何在 vscode webview 中使用 acquireVsCodeApi [React]
我正在尝试为基于Webview的vscode开发一个新的扩展,但是我在从客户端向扩展发布消息时遇到了问题。作为初学者,我使用了这个存储库,并且正在关注...
我有一个WebView,里面有一个iframe。 iframe 的内容会重定向到另一个不允许嵌入 iframe 的 URL。没问题,实际上,我只是想启动外部
使用 python 中的 pywebview 库重新加载/刷新网页
可以使用 pywebview 库重新加载网页吗? 我的意思是,我有这个代码: 导入网页视图 webview.create_window('哇老兄!', 'index.html') webview.start(http_server=True) ……一个……
如何用Dart(Flutter)检测当前页面是否在webview中运行(而不是在外部浏览器/系统浏览器中)
我在 Facebook 帖子上分享了我的网络应用程序链接,我的用户单击此链接,页面在 Facebook 网络视图中打开。我想提醒他们“您正在 Facebook 浏览器中查看此页面,请打开
我正在用我自己的 Swift 广告制作移动浏览器,我想运行脚本。我已经注入 JavaScript 本地文件,但它在其他窗口中打开并覆盖 webView 内容。可以跑步吗
为什么 .NET MAUI WebView 无法打开非其来源网站的链接?
我正在使用 Visual Studio 2022 开发一个包含 WebView 对象的 NET MAUI 移动应用程序。 源网站 mywebsite.com 已正确加载,并且其所有内部链接均有效。 我的目标是...
如何在flutter web中检测InAppWebView中的滚动事件?
我想知道用户何时滚动webview,以便我可以处理一些操作。但目前我无法检测到滚动事件。 InAppWebView( onScrollChanged:(控制器,我...
我想知道用户何时结束在显示条款和条件的 Web 视图上的滚动,以便仅当用户阅读此内容时才显示“接受”按钮。 我想知道用户何时结束在显示条款和条件的 Web 视图上的滚动,以便仅当用户阅读此内容时才显示“接受”按钮。 <StackLayout Spacing="0" BackgroundColor="{StaticResource WhiteColor}"> <CustomView:HeaderView VerticalOptions="Start" LeftImageSource="{Binding LeftImage}" RightImageSource="{Binding RightImage}" LeftCommand="{Binding LeftClickCommand}" RightCommand="{Binding RightClickCommand}" HeaderText="{Binding ScreenTitle}" PrevText="{Localize:ETranslate PrevText}" /> <WebView Source="{Binding Html, Converter={StaticResource HtmlSourceConverter}}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" /> </StackLayout> public class HtmlSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var html = new HtmlWebViewSource(); if (value != null) { html.Html = value.ToString(); } return html; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 我尝试使用 Renderer 来实现此目的,但在 iOS WkWebViewRenderer 中没有 WebViewRenderer 中可用的 Scrolled() 方法。 有什么方法可以在 Xamarin.Forms 中实现这一点吗? WKWebView 内部有一个属性 ScrollView,所以我们可以用它覆盖 Delegate。 WKWebViewRenderer 中的代码 [assembly: ExportRenderer(typeof(WebView), typeof(MyRenderer))] namespace FormsA.iOS { public class MyDelegate : UIScrollViewDelegate { public override void Scrolled(UIScrollView scrollView) { if(scrollView.ContentOffset.Y >= scrollView.ContentSize.Height - scrollView.Frame.Size.Height) { //here rearch bottom } else if(scrollView.ContentOffset.Y < scrollView.ContentSize.Height) { } } } public class MyRenderer: WkWebViewRenderer { protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); this.ScrollView.Delegate = new MyDelegate(); } } } 它在我这边工作得很好,请参阅https://stackoverflow.com/a/52872317/8187800. 我也有 Android 的解决方案。这是完整的解决方案,希望这对寻找相同解决方案的人有帮助! MyPage.xaml <webview:ScrollWebView x:Name="webView" Source="{Binding Html, Converter={StaticResource HtmlSourceConverter}}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" IsBottomReached="{Binding IsShowAgreeButton}"/> ScrollWebView 控件 public class ScrollWebView : WebView { public static BindableProperty IsBottomReachedProperty = BindableProperty.Create(nameof(IsBottomReached), typeof(bool), typeof(ScrollWebView), default(bool), BindingMode.TwoWay, propertyChanged: null); public bool IsBottomReached { get { return (bool)GetValue(IsBottomReachedProperty); } set { SetValue(IsBottomReachedProperty, value); } } } Android:ScrollWebViewRenderer [assembly: Xamarin.Forms.ExportRenderer(typeof(ScrollWebView), typeof(ScrollWebViewRenderer))] namespace MyApp.Droid { public class ScrollWebViewRenderer : WebViewRenderer { public static ScrollWebView view = null; public ScrollWebViewRenderer(Context context) : base(context) { } protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); view = (ScrollWebView)Element; if (Control != null) { Control.ScrollChange += Control_ScrollChange; } } private void Control_ScrollChange(object sender, ScrollChangeEventArgs e) { var nativeWebView = e.V as global::Android.Webkit.WebView; int height = (int)Math.Floor(nativeWebView.ContentHeight * nativeWebView.Scale); int webViewheight = nativeWebView.Height; int cutOff = height - webViewheight; if (e.ScrollY >= cutOff) { view.IsBottomReached = true; System.Diagnostics.Debug.WriteLine("Bottom Reached"); } else { view.IsBottomReached = false; } } } } iOS:ScrollWebViewRenderer [assembly: ExportRenderer(typeof(ScrollWebView), typeof(ScrollWebViewRenderer))] namespace MyApp.iOS.RendererClasses { public class ScrollWebViewRenderer : WkWebViewRenderer { public static ScrollWebView view = null; public ScrollWebViewRenderer() { } protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); view = (ScrollWebView)Element; MyDelegate myDel = new MyDelegate(); myDel.ProcessCompleted += MyDel_ProcessCompleted; this.ScrollView.Delegate = myDel; } private void MyDel_ProcessCompleted(object sender, bool isScrolledToBottom) { view.IsBottomReached = isScrolledToBottom; } } public class MyDelegate : UIScrollViewDelegate { public event EventHandler<bool> ProcessCompleted; public override void Scrolled(UIScrollView scrollView) { if (scrollView.ContentOffset.Y >= scrollView.ContentSize.Height - scrollView.Frame.Size.Height) { System.Diagnostics.Debug.WriteLine("Bottom Reached"); ProcessCompleted?.Invoke(this, true); } else { ProcessCompleted?.Invoke(this, false); } } } } 实现这个答案后,https://stackoverflow.com/a/66931493/15125666我仍然遇到Android渲染器的问题,因为它没有检测到用户何时到达WebView的底部。 为了解决这个问题,您需要在计算中添加一个缓冲区,这将在将内容高度乘以比例时考虑任何潜在的浮点错误。 这里是 Android 的更新代码:ScrollWebViewRenderer private void Control_ScrollChange(object sender, ScrollChangeEventArgs e) { var nativeWebView = e.V as global::Android.Webkit.WebView; int height = (int)(nativeWebView.ContentHeight * nativeWebView.Scale); int webViewheight = nativeWebView.Height; int bottomThreshold = (int)Math.Floor(0.004 * webViewheight); // the number that I used 0.004 was what worked for me. you might need to adjust it for your use case. int cutOff = height - webViewheight - bottomThreshold; if (e.ScrollY >= cutOff) { view.IsBottomReached = true; System.Diagnostics.Debug.WriteLine("Bottom Reached"); } else { view.IsBottomReached = false; } } 这里我添加了一个动态 bottomThreshold 缓冲区,并将其用于 cutOff 计算。它在计算中添加了一个小缓冲区,以确保即使很小的差异也不会妨碍到达底部的检测。
当我使用 flutter 的 InAppWebView 包加载页面时,我试图拦截特定的 post 请求并获取它的正文。 在 iOS 上,此解决方案使用“shouldOverrideUrlLoading”来 c...
如何在应用内 Chromium 浏览器中启用通知模块? (未捕获的引用错误:未定义通知)
我正在开发一个具有基于 Chromium 的应用内浏览器的应用程序。我需要允许用户通过这个兄弟与某个网页/服务器(我没有内部访问权限)进行交互......
将数据从 React Native 发送到 WebView 渲染的 React 应用程序时遇到问题
我正在开发一个项目,需要将数据(特别是陀螺仪数据)从 React Native 应用程序发送到在 WebView 内呈现的 React 应用程序。然而,我在成功方面遇到了困难
我正在使用谷歌登录我的应用程序,并且登录页面正在加载 Flutter 自定义选项卡包。我的页面已成功加载,但我想以编程方式关闭选项卡并将其路由到...
如何在 Flutter 中实现 WebView 中的 UI 现代化?我在 Flutter 中的 WebView 控制器看起来太旧了
Android 的问题 我在 Flutter 中遇到了 WebView 控制器的问题。它看起来已经过时了,我想知道如何使其外观现代化。我已经广泛研究了这个问题......
使用本地 CSS 在应用程序中显示站点(使用 Android Studio)
我有一个专为在移动设备上显示而设计的网站。所以我决定使用 Android Studio。 我想显示我的 html 文件,从服务器实时显示,但应用程序中有本地 css 和 js 文件...