背景
想要完成一个浏览器客户端的基本功能,除了可以加载出网页页面,实现页面跳转意外,还需要很多其他的功能。例如网页的前进、后退、览器的刷新、调出控制台窗口、设置cookie等。后续还会尝试实现页面调用打印时,弹出自定义的打印窗口、支持视频播放等功能。
我们的程序是基于cef.sln中的cefsimple项目现有的功能基础上进行实现的。所以读者想进行测试,可以直接将功能代码注入到cef.sln中的cefsimple项目中进行测试。
具体实现
CefBrowser类表示浏览器窗口,类中实现了GoBack()、GoForward()、Reload()等方法。可以实现网页的后退、前进、刷新等功能。
获取浏览器窗口类
在simple_handler.h文件中有一个浏览器窗口列表变量,里面存储了所有创建了的CefBrowser,所以我们想要获取浏览器窗口类,就需要在simple_handler.h文件中添加一个getBrowser()函数,返回一个CefBrowser。
//simple_handler.h
CefRefPtr<CefBrowser> getBrowser();
复制代码
//simple_handler.cpp
//如果集合不为空,获取集合中的第一个CefBrowser元素。
CefRefPtr<CefBrowser> SimpleHandler::getBrowser()
{
if(!browser_list_.empty())
{
return browser_list_.front();
}
return NULL;
}
复制代码
1.前进
直接通过浏览器窗口的SimpleHandler调用我们创建好的getBrowser(),判断指针是否为空,不为空调用GoForward()函数即可。
void CefBrowserWidget::forward()
{
if(m_cefHandler->getBrowser())
{
m_cefHandler->getBrowser()->GoForward();
}
}
复制代码
2.后退
同前进。方法改为调用GoBack()函数。
void CefBrowserWidget::back()
{
if(m_cefHandler->getBrowser())
{
m_cefHandler->getBrowser()->GoBack();
}
}
复制代码