js/css注入顾名思义,就是通过调用浏览器的注入对外接口,将我们本地写的js或者css注入到打开的网页中,可以制作一些插件以及输入法小键盘等操作。值得注意的是,在注入的过程中,如果是开发新的功能,尽量命名不要与网页重叠;当然如果想要干掉原网页的一些js或者css代码,也可以命名相同,通过覆盖的方式替换自己的代码。
下面将介绍注入js/css的重要接口,在PageGroup.cpp文件下有两个接口:
Js:
[cpp] view plain copy
1. voidPageGroup::addUserScriptToWorld(DOMWrapperWorld& world, const String&source, const URL& url, const Vector<String>& whitelist, constVector<String>& blacklist, UserScriptInjectionTime injectionTime,UserContentInjectedFrames injectedFrames)
Css:
[html] view plain copy
1. voidPageGroup::addUserStyleSheetToWorld(DOMWrapperWorld& world, constString& source, const URL& url, const Vector<String>& whitelist,const Vector<String>& blacklist, UserContentInjectedFramesinjectedFrames, UserStyleLevel level, UserStyleInjectionTime injectionTime)
其中调用流程很简单,你只需要获得webkit对外接口类webview.cpp,里面你可以看见它有Page对象,通过这个Page对象就可以引用到PageGroup对象,至于你怎么写接口调用下去,就是你们自己的事儿了。
调用流程已经介绍完毕,下面讲一下这几个参数的意思吧:
DOMWrapperWorld.h下的mainThreadNormalWorld()函数;
const String& source:这个就是你要传进来的js或者css代码,很好理解
const URL& url:这个默认URL url = URL(ParsedURLString, "JsCssInject");创建这个url传进去
constVector<String>& whitelist:这是一个url白名单,在这个url名单里的网页都会注入进你的js/css。如果这个Vector没有数据,那就会注入所有网页中
constVector<String>& blacklist:这是url黑名单,顾名思义,就是在这个名单的网页都不会注入你的js/css代码。如果这个Vector没有数据就表示不做任何处理。
UserScriptInjectionTime
UserContentInjectedFrames
UserStyleLevel
到此为止吧!