webkit js注入

来源:互联网 发布:网络英语培训哪家好 编辑:程序博客网 时间:2024/05/19 22:27

js/css注入顾名思义,就是通过调用浏览器的注入对外接口,将我们本地写的js或者css注入到打开的网页中,可以制作一些插件以及输入法小键盘等操作。值得注意的是,在注入的过程中,如果是开发新的功能,尽量命名不要与网页重叠;当然如果想要干掉原网页的一些js或者css代码,也可以命名相同,通过覆盖的方式替换自己的代码。

       下面将介绍注入js/css的重要接口,在PageGroup.cpp文件下有两个接口:

Js:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  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
 在CODE上查看代码片派生到我的代码片
  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& world:这个是DOM包裹上下文,它有对外接口可以获取,对外接口就在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没有数据就表示不做任何处理。

 

UserScriptInjectionTimeinjectionTime:表示注入的位置,有start和end,具体可以去查询一下UserScriptInjectionTime

UserContentInjectedFramesinjectedFrames:表示注入的frame,可以为所有frame,也可以是mainframe,具体可以查询UserContentInjectedFrames

 

针对css,还多一个参数UserStyleLevellevel:将的就是css的各种level,网上有很多相关资料,具体参数设置也可以查询UserStyleLevel

 

       到此为止吧!

0 0
原创粉丝点击