参考:

浏览器插件(Plugins)开发 - II

http://wen-bing.github.io/blog/2013-04-24/NPAPI-plugin-intro-2/

无窗口型(Windowless)

无窗口型插件的绘制实际上就是离屏渲染的概念。 浏览器在调用NPP_SetWindow方法时给插件传了一个Drawable,插件只能在浏览器指定的Drawable上显示自己。不同平台这个Drawable不一样。Windows下是HDC,Linux下是X11的Drawable(Pixmap), Mac下是CoreGraphics的context。而具体的绘制过程,则还是有浏览器来控制,当浏览器知道插件需要被重新绘制了,它会调用插件端的API: NPP_HandleEvent,然插件绘制自己。 在API NPP_HandleEvent中浏览器会传递一个event对象:NPEvent,它可以表示不同的事件,包括paint。

当然插件也可以通知浏览器,我需要重绘了。这个时候插件可以调用浏览器的API:NPN_InvalidateRect。当插件调用了NPN_InvalidateRect之后,浏览器会在合适的时候(不是立即)调用插件的NPP_HandleEvent来重绘。虽然NPAPI也提供了一个NPN_ForceRedraw的API,但是很多浏览器没有实现这个API,可能是因为这个API的杀伤力太大了吧。

到现在为止,我们就可以用NPAPI创建一个插件,并且让浏览器能加载我们的插件,还能显示我们自己的内容。当然要实现一个想Flash Player这样的插件,还是有很多工作要做的。

例子

下面的链接提供了一个很好的例子: https://code.google.com/p/npapi-chrome-plugin-simple-http/

Windowless的更多相关文章

  1. 记一次npapi插件无窗口(windowless )化下的妙巧思路然后解决问题的超爽体验过程

     1:问题 集成第三方的ocx控件,用来做pdf显示和签名.如果用窗口化插件做,很简单,加载ocx到窗口中,再显示到网页即可.但这样有个缺点.就是这个窗口会浮动在网页元素的上面,导致遮挡住网页元素.比 ...

  2. C#使用 DirectX SDK 9做视频播放器 并在视频画线添加文字 VMR9

    视频图像处理系列 索引 VS2013下测试通过. 在百度中搜索关键字“DirectX SDk”,或者进入微软官网https://www.microsoft.com/en-us/download/det ...

  3. Bootstrap modal被sliverlight掩盖。

    Bootstrap中的modal被silverlight遮挡了,解决方案: <object id='xx'....> ... <param name="windowless ...

  4. 网页中插入FLASH(swf文件),并且让Flash不遮挡HTML元素

    一:网页中插入flash代码如下:  当然里面的很多属性可以去掉,根据具体的需求而定.  我们在网页中经常遇到播放flash,要正常播放flash就要用到OBJECT和EMBED这两个标签.鉴于火狐及 ...

  5. Chromium Embedded Framework 中文文档(简介)

    转自:http://www.cnblogs.com/think/archive/2011/10/06/CEF-Introduce.html 简介 Chromium Embedded Framework ...

  6. Html页面插入flash代码

    转自:http://www.educity.cn/jianzhan/402117.html 转自:http://www.cnblogs.com/yxc_fj/articles/1390621.html ...

  7. silverlight嵌套html不能输入中文问题

    1.xaml <UserControl xmlns:SilverlightClient="clr-namespace:SilverlightClient" x:Class=& ...

  8. silverlight 不能输入中文问题

    <param name="Windowless" value="true" />将调用silverlight页面的这句删除掉应该就能解决问题了 1. ...

  9. Silverlight中动画的性能浅析

    Silverlight中提供了StoryBoard实现动画,可是StoryBoard的性能实在不敢恭维,特别是动画很大的时候,计算机的CPU和内存的狂增,如此一来性能实在太差,在默认的动画效果中动画实 ...

随机推荐

  1. AWVS (Acunetix Web Vulnerability Scanner )

    1.AWVS 是国外一款不错的安全测试工具 ,界面清楚,使用方便.可以爬取网页加载payload测试存在的安全问题            破解版的下载地址: https://www.arvinhk.c ...

  2. 关于RGBDSLAMV2学习、安装、调试过程

    Step1:https://github.com/felixendres/rgbdslam_v2/wiki/Instructions-for-Compiling-Rgbdslam-(V2)-on-a- ...

  3. Buffer Latch Timeout的解析

    [问题描述] 我们可能会在数据库的错误日志里,发现这么一条信息: A time-out occurred while waiting for buffer latch -- type 4, bp 00 ...

  4. P1903 [国家集训队]数颜色 / 维护队列(带修莫队)

    题目描述: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. ...

  5. Kotlin属性揭秘与延迟初始化特性

    在上一次https://www.cnblogs.com/webor2006/p/11210181.html学习了Kotlin的伴生对象,这次来学习属性相关的东东. 属性揭秘: 先声明一个属性: 没啥可 ...

  6. qingqing的项目

    1 https://www.cnblogs.com/zhangqing979797/p/10147679.html 2 https://www.cnblogs.com/zhangqing979797/ ...

  7. 第三天Beta冲刺

    团队作业Beta冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件 ...

  8. HDFS的NameNode中的Namespace管理

    在NameNode中的Namespace管理层是负责管理整个HDFS集群文件系统的目录树以及文件与数据块的映射关系.以下就是Namespace的内存结构: 以上是一棵文件目录树,可见Namespace ...

  9. Java - 框架之 SpringBoot 攻略day01

          Spring-Boot 攻略 day01 spring-boot   一. 基本配置加运行   1. 导入配置文件(pom.xml 文件中)   <parent> <gr ...

  10. Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)

    近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...