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

 

       到此为止吧!