手机程序员常说的webview到底是个啥东西

news/2024/9/23 6:36:23/

好像安卓和IOS程序员最常说的关于他们专业的名词就是webview,但是这个webview到底是个啥玩意?

先从安卓程序员用的webview入手,就几个webview的函数

  WebView.loadUrl("http://www.ltplayer.com");// 加载url,也可以执行js函数WebView.setWebViewClient(new SafeWebViewClient());// 设置 WebViewClient WebView.setWebChromeClient(new SafeWebChromeClient());// 设置 WebChromeClientWebView.onResume();WebView.resumeTimers();WebView.onPause();WebView.pauseTimers();WebView.stopLoading();// 停止当前加载WebView.clearMatches();WebView.canGoBack();WebView.clearSslPreferences();WebView.clearCache(true);方也会使用到。该方法接受一个参数,从命名即可看出作用。若设为false,则只清空内存里的资源缓存,而不清空磁盘里的。WebView.loadUrl("about:blank");WebView.removeAllViews();//WebView.destroy();// 生命周期销毁

java程序员不陌生,这个就是安卓上的一些webview的操作。

不过,webview作为webkit的一种调用,它一定是使用了webkit,但它具体在webkit中是如何调用的呢?

其实要弄明白这事情,就需要看webkit源码了。

打开webkit源代码D:\WebKit\Source\WebKit\文件夹,你会看到里面有很多,不同平台的名字,win、wince、qt、gtk、blackberry…很多,随便打开个看看,从文件结构上去看,基本上差不了多少,从名字也上也能分析出来,这个是不同平台下使用的东西,选择一个文件夹进入,win代表windows,平常多用windows,所以看这个,比较好理解。

进入win以后,你会看到有很多的文件,非常多,但仔细看,你就会发现一个叫WebView.cpp,WebView.h,这个就是传统意义上的webview,打开文件看看,会发现有一些方法在C++的定义中是存在的,比如stopLoading

RESULT STDMETHODCALLTYPE WebView::stopLoading( /* [in] */ IUnknown* /*sender*/)
{if (!m_mainFrame)return E_FAIL;return m_mainFrame->stopLoading();
}

比如和destroy对应的close

HRESULT STDMETHODCALLTYPE WebView::close()
{if (m_didClose)return S_OK;m_didClose = true;#if USE(ACCELERATED_COMPOSITING)setAcceleratedCompositing(false);
#endifWebNotificationCenter::defaultCenterInternal()->postNotificationName(_bstr_t(WebViewWillCloseNotification).GetBSTR(), static_cast<IWebView*>(this), 0);if (m_uiDelegatePrivate)m_uiDelegatePrivate->webViewClosing(this);removeFromAllWebViewsSet();if (m_page) {if (Frame* frame = m_page->mainFrame())frame->loader()->detachFromParent();}if (m_mouseOutTracker) {m_mouseOutTracker->dwFlags = TME_CANCEL;::TrackMouseEvent(m_mouseOutTracker.get());m_mouseOutTracker.clear();}

不过你会发现,即使叫webview但实际上在webview.cpp中也有很多方法是找不到的,比如setWebChromeClient,在webview中没有关于他的C++函数存在,这个时候就有两种可能,一,名字不同java二次封装时改变了原有名称。二,它并不再webview里定义。

所以,在继续找找。。。

你会发现在WebCoreSupport文件夹下有个叫WebChromeClient.cpp的文件

WebChromeClient::WebChromeClient(WebView* webView)76      : m_webView(webView)77  #if ENABLE(NOTIFICATIONS)..81  }

对,这个就是setWebChromeClient,只不过是在win平台上的在安卓平台上,有一个和他差不多的文件存在。在继续找找其他的方法定义

stopLoading定义在WebFrame.cpp中

HRESULT STDMETHODCALLTYPE WebFrame::stopLoading( void)
{if (Frame* coreFrame = core(this))coreFrame->loader()->stopAllLoaders();return S_OK;
}

还有关于历史记录的操作定义在WebHistory中,关于缓存的操作定义在WebCache里。继续找下去,所有的webview调用的方法都能在不同平台的响应文件中找到。

总上所述,其实webview并不是安卓或者IOS独有的东西,webview就是个对不同平台开放的webkit有API,也包括对Ios和安卓,他定义了在不同平台下的操作方式,以及不同平台下,不同的特性,比如在win平台下利用createwindow来创建窗口,用消息方式来处理各种交互等

本文同步发布于http://www.ltplayer.com/blog/2019/01/02/2019.01.02


http://www.ppmy.cn/news/657585.html

相关文章

X5WebView使用

用过 Android 自带 WebView 的都知道&#xff0c;每次加载数据过多时&#xff0c;等待时间非常久&#xff0c;体验非常差。所以腾讯推出了&#xff1a;腾讯浏览服务&#xff0c;也就是 X5WebView &#xff1b;下面来看一下效果图&#xff1a; GitHub 下载地址&#xff1a;https…

[移动端开发]到底什么是WebView?

移动端开发中的WebView到底是什么&#xff1f; 前言&#xff1a;移动端开发的童鞋应该都听说过一个名词 WebView&#xff0c;那么到底什么是WebView&#xff1f;今天我们来讲一下什么是WebView吧 一、WebView到底是什么 WebView&#xff0c;直译是网页视图&#xff0c;是一个基…

webview是什么?作用是什么?和浏览器有什么关系?

Webview 是一个基于webkit的引擎&#xff0c;可以解析DOM 元素&#xff0c;展示html页面的控件&#xff0c;它和浏览器展示页面的原理是相同的&#xff0c;所以可以把它当做浏览器看待。&#xff08;chrome浏览器也是基于webkit引擎开发的&#xff0c;Mozilla浏览器是基于Gecko…

Android的webview有什么用,webview实现有什么用

WebView是android中一个非常重要的控件&#xff0c;它的作用是用来展示一个web页面。它使用的内核是webkit引擎&#xff0c;4.4版本之后&#xff0c;直接使用Chrome作为内置网页浏览器。 作用(推荐学习&#xff1a;Java视频教程) 显示和渲染网页&#xff1b; 可与页面JavaScrip…

红米android system干什么的,Android System Webview是什么东西

这是安卓系统内置webkit内核浏览器的一个组件&#xff0c;组件名称为Webview。 WebView是安卓系统中一款基于webkit引擎、展现web页面的控件。 Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;在版本更新到4.4后直接使用了Chrome版本。 WebView能够对…

app中的webview是什么?如何理解?

app中的webview是什么&#xff1f;如何理解&#xff1f; 当你上网阅读东西时&#xff0c;我们一般会选择一款浏览器&#xff0c;比如Chrome、火狐、safari、IE或者Edge。你可能不知道这些浏览器之间有一些竞争&#xff0c;而竞争的主要形式就是WebView。 WebView的定义 什么…

JS学习笔记——前端的webview是什么东西

1、webview的概念 疑问&#xff1a;webview是什么&#xff1f;作用是什么&#xff1f;和浏览器有什么关系&#xff1f; 先放一段基本定义&#xff1a; A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply di…

webview详解

一、基础知识 1、webview入门知识 1.我们通常是用浏览器来浏览网页&#xff0c;你很清楚的知道你正在使用浏览器&#xff0c;要么是PC客户端&#xff0c;要么是手机上的app。但是webview是一个嵌入式的浏览器&#xff0c;是嵌入在原生应用中的&#xff0c;你可能都意识不到你在…