CN108304182B - 一种支持嵌套窗口的控件的实现方法及装置 - Google Patents
一种支持嵌套窗口的控件的实现方法及装置 Download PDFInfo
- Publication number
- CN108304182B CN108304182B CN201810151516.4A CN201810151516A CN108304182B CN 108304182 B CN108304182 B CN 108304182B CN 201810151516 A CN201810151516 A CN 201810151516A CN 108304182 B CN108304182 B CN 108304182B
- Authority
- CN
- China
- Prior art keywords
- control
- browser
- attribute data
- module
- window
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种支持嵌套窗口的控件的实现方法及装置,属于计算机技术领域。该方法包括:当第一接口函数被调用时,创建控件存储对象,设置绘制模式为核心动画绘制模式;当第三接口函数被调用时,若控件存储对象中没有动画绘制层对象,则创建动画绘制层对象,并在动画绘制层对象中添加包含绘制函数对象的控制层对象后,给浏览动画绘制层对象,当所述动画绘制层对象中的控制层对象的绘制函数被调用时,根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。本发明物实现了在Mac平台使用Webkit为浏览器内核的浏览器页面也可以支持嵌套窗口的有益效果。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种支持嵌套窗口的控件的实现方法及装置。
背景技术
控件是一种遵循一定规范的应用程序接口编写出来的程序,控件种类繁多,很多控件需要与浏览器页面进行交互实现其功能,例如,输入控件,需要通过控件与浏览器的交互,从而在浏览器页面内实现输入窗口的功能。
现有技术中,我们在Windows操作系统下的浏览器中开发实现的具有显示效果和功能的控件,难以应用在Mac OS X平台的浏览器中,因为Mac OS X平台使用Webkit为浏览器内核的浏览器不支持页面内嵌套窗口。
因此,针对在不支持嵌套窗口的浏览器页面实现嵌套窗口的显示效果和功能的控件的开发工作成为技术难题。
发明内容
为解决现有技术中的技术问题,本发明提供了一种支持嵌套窗口的控件的实现方法及装置。
本发明采用的技术方案如下:一种支持嵌套窗口的控件的实现方法,包括:
步骤S1:控件等待被浏览器调用,当控件的第一接口函数被调用时,执行步骤S2,当控件的第三接口函数被调用时,执行步骤S3;
步骤S2:所述控件创建控件存储对象,设置绘制模式为核心动画绘制模式,所述控件根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;所述控件给所述浏览器返回创建成功信息,然后返回执行步骤S1;
步骤S3:所述控件根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则执行步骤S4,若是获取核心动画层的动画绘制层对象则执行步骤S5;
步骤S4:所述控件判断当前的绘制模式是否是核心动画绘制模式,是则所述控件给所述浏览器返回核心动画绘制模式信息,返回执行步骤S1;否则所述控件给所述浏览器返回错误提示信息,结束;
步骤S5:所述控件判断所述控件存储对象中是否有动画绘制层对象,是则所述控件给所述浏览器返回动画绘制层对象,然后返回执行步骤S1,否则所述控件创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,所述控件给所述浏览器返回当前的动画绘制层对象,然后返回执行步骤S1;
所述步骤S5之后还包括:当所述动画绘制层对象中的控制层对象的绘制函数被调用时,所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
上述设置绘制模式为核心动画绘制模式之前还包括:所述控件判断所述浏览器是否支持核心动画绘制模式,是则执行所述设置绘制模式为核心动画绘制模式,否则所述控件向所述浏览器返回版本不兼容信息,结束。
优选的,上述步骤S1中还包括:当控件的第二接口函数被调用时,所述控件根据所述浏览器传来的绘制窗口参数得到输入框对象,将输入框对象添加到所述控件存储对象中,所述控件给所述浏览器返回设置成功信息,然后返回执行步骤S1。当控件的第四接口函数被调用时,执行步骤S6;
步骤S6:所述控件解析所述浏览器传来的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则执行步骤S7,若触发事件为鼠标抬起则返回执行步骤S1;若触发事件为键盘按下则执行步骤S8;
步骤S7:所述控件根据控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数计算得到鼠标坐标值,根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志,所述控件给所述浏览器返回触发响应,返回执行步骤S1;
步骤S8:所述控件判断是否为功能键按下,是则根据功能键类型处理触发事件,所述控件给所述浏览器返回触发响应,返回执行步骤S1;否则所述控件在控件存储对象中记录按键内容,所述控件给所述浏览器返回触发响应,返回执行步骤S1;
所述控件给所述浏览器返回触发响应之后还包括:当所述动画绘制层对象中的控制层对象的绘制函数被调用时,更新浏览器页面内的所述嵌套窗口。
所述控件属性数据包括窗口属性数据;所述步骤S7具体为:
所述控件对控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数使用预设算法进行计算得到鼠标坐标值,从控制层对象中获取控件属性数据,根据所述控件属性数据中的窗口属性数据判断所述鼠标坐标值是否在控制层范围内,是则置位鼠标焦点标志,所述控件给所述浏览器返回触发响应,返回执行步骤S1;否则复位鼠标焦点标志,所述控件给所述浏览器返回执行成功信息,返回执行步骤S1。
所述控件属性数据包括键盘属性数据;所述步骤S7中所述根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志之后还包括:所述控件根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型并弹出软键盘,给所述浏览器返回触发响应,返回执行步骤S1;否则根据所述键盘属性数据设置键盘类型,给所述浏览器返回触发响应,返回执行步骤S1。
上述当所述动画绘制层对象中的控制层对象的绘制函数被调用时,更新浏览器页面内的所述嵌套窗口,具体包括:
步骤1:所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示嵌套窗口;
步骤2:所述控件判断鼠标焦点标志是否置位,是则执行步骤3,否则所述控件关闭鼠标闪烁定时器,执行步骤4;
步骤3:所述控件启动鼠标闪烁定时器,在浏览器页面内的嵌套窗口中显示鼠标闪烁,执行步骤4;
步骤4:所述控件根据控件存储对象中记录的按键内容获取显示内容,并显示在所述嵌套窗口中。
步骤5:所述控件根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标,否则结束。
上述步骤1还包括:所述控件获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示嵌套窗口,具体为:所述控件从预设数组中获取与所述控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为所述嵌套窗口在浏览器页面内显示;
上述步骤4具体为:所述控件根据控件存储对象中记录的按键内容,从预设数组中获取与之对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
上述步骤S1中还包括:当控件的第五接口函数被调用时,所述控件释放所述控件存储对象的内存空间,所述控件给所述浏览器返回执行成功信息,返回执行步骤S1。
优选的,上述步骤S3还包括:当所述控件判断所述浏览器要获取的数据类别是获取脚本类型对象时,所述控件判断所述控件存储对象中是否存在控件脚本对象,是则所述控件给所述浏览器返回所述控件存储对象中保存的控件脚本对象,否则所述控件创建控件脚本对象,并将创建的控件脚本对象添加到控件存储对象中,给所述浏览器返回创建的控件脚本对象。
本发明还提供的一种支持嵌套窗口的控件的实现装置,包括触发模块、第一接口函数操作模块和第三接口函数操作模块;
所述触发模块,用于当接收到浏览器调用第一接口函数的通知时,触发第一接口函数操作模块,用于当接收到浏览器调用第三接口函数的通知时,触发第三接口函数操作模块;
所述第一接口函数操作模块,用于创建控件存储对象,设置绘制模式为核心动画绘制模式,根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;给所述浏览器返回创建成功信息;
所述第三接口函数操作模块包括第一判断模块、第二判断模块、第三判断模块和嵌套窗口绘制模块;
所述第一判断模块,用于根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则触发第二判断模块,若是获取核心动画层的动画绘制层对象则触发第三判断模块;
所述第二判断模块,用于判断当前的绘制模式是否是核心动画绘制模式,是则给所述浏览器返回核心动画绘制模式信息,否则给所述浏览器返回错误提示信息;
所述第三判断模块,用于判断所述控件存储对象中是否有动画绘制层对象,是则给所述浏览器返回动画绘制层对象,否则创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,给所述浏览器返回当前的动画绘制层对象;
所述嵌套窗口绘制模块,用于当所述动画绘制层对象中的控制层对象的绘制函数被调用时,根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
上述第一接口函数操作模块,还用于判断所述浏览器是否支持核心动画绘制模式,是则执行所述设置绘制模式为核心动画绘制模式,否则向所述浏览器返回版本不兼容信息。
所述装置还包括第二接口函数操作模块;所述触发模块,还用于当接收到浏览器调用第二接口函数的通知时,触发第二接口函数操作模块;
所述第二接口函数操作模块,用于根据所述浏览器传来的绘制窗口参数得到输入框对象,将输入框对象添加到所述控件存储对象中,给所述浏览器返回设置成功信息。
所述装置还包括第四接口函数操作模块;所述触发模块,还用于当接收到浏览器调用第四接口函数的通知时,触发第四接口函数操作模块;
所述第四接口函数操作模块包括解析判断模块、鼠标按下事件处理模块和键盘按下事件处理模块;
所述解析判断模块,用于解析所述浏览器传来的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则触发所述鼠标按下事件处理模块;若触发事件为键盘按下则触发所述键盘按下事件处理模块;
所述鼠标按下事件处理模块,用于根据控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数计算得到鼠标坐标值,根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志,给所述浏览器返回触发响应;
所述键盘按下事件处理模块,用于判断是否为功能键按下,是则根据功能键类型处理触发事件,给所述浏览器返回触发响应;否则在控件存储对象中记录按键内容,给所述浏览器返回触发响应;
所述嵌套窗口绘制模块,还用于当给所述浏览器返回所述触发响应之后所述绘制函数被调用时,更新浏览器页面内的所述嵌套窗口。
所述嵌套窗口绘制模块具体包括绘制单元、判断单元、启动单元和获取单元;
所述绘制单元,用于根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口;
所述判断单元,用于判断鼠标焦点标志是否置位,是则触发启动单元,否则关闭鼠标闪烁定时器,触发所述获取单元;
所述启动单元,用于启动鼠标闪烁定时器,在浏览器页面内的嵌套窗口中显示鼠标闪烁,并触发获取单元;
所述获取单元,用于根据控件存储对象中记录的按键内容获取显示内容,并显示在所述嵌套窗口中。
所述嵌套窗口绘制模块还具体包括贴图单元;
所述贴图单元,用于根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标。
所述嵌套窗口绘制模块还包括设置单元;
所述设置单元,用于获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
所述绘制单元,具体用于从预设数组中获取与所述控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为所述嵌套窗口在浏览器页面内显示;
所述获取单元,具体用于根据控件存储对象中记录的按键内容,从预设数组中获取与之对应的预设格式对象,并将所述预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
优选的,所述装置还包括第五接口函数操作模块;所述触发模块,还用于当接收到浏览器调用第五接口函数的通知时,触发第五接口函数操作模块;
所述第五接口函数操作模块,用于释放所述控件存储对象的内存空间,给所述浏览器返回执行成功信息。
优选的,上述第三接口函数操作模块还包括第四判断模块,所述第一判断模块,还用于当根据所述浏览器传来的获取参数判断浏览器要获取的数据类别是获取脚本类型对象时触发第四判断模块;
所述第四判断模块,用于判断控件存储对象中是否存在控件脚本对象,是则给所述浏览器返回所述控件存储对象中保存的控件脚本对象,否则创建控件脚本对象,并将创建的控件脚本对象添加到控件存储对象中,给所述浏览器返回创建的控件脚本对象。
本发明的有益效果为:本发明提供的一种支持嵌套窗口的控件的实现方法及装置,实现了“嵌套窗口”的功能开发,扩展了基于不支持嵌套窗口浏览器内核开发的相关需求可行性和功能性。
附图说明
图1是本发明实施例1提供的一种支持嵌套窗口的控件的实现方法的流程图;
图2是本发明实施例2提供的一种支持嵌套窗口的控件的实现方法的流程图;
图3是本发明实施例3提供的第一接口函数被调用时的操作流程图;
图4是本发明实施例3提供的第二接口函数被调用时的操作流程图;
图5是本发明实施例3提供的第三接口函数被调用时的操作流程图;
图6是本发明实施例3提供的第四接口函数被调用时的操作流程图;
图7是本发明实施例3提供的第五接口函数被调用时的操作流程图;
图8是本发明实施例3提供的绘制函数被调用时的操作流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚和完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例1提供的一种支持嵌套窗口的控件的实现方法,通过浏览器加载控件,从而调用控件中的具体接口函数来实现,本实施例中,所述控件包含有第一接口函数和第三接口函数,如图1所示,该方法包括:
步骤S1:控件等待被浏览器调用,当控件的第一接口函数被调用时,执行步骤S2,当控件的第三接口函数被调用时,执行步骤S3;
步骤S2:所述控件创建控件存储对象,设置绘制模式为核心动画绘制模式,所述控件根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;所述控件给所述浏览器返回创建成功信息,然后返回执行步骤S1;
步骤S3:所述控件根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则执行步骤S4,若是获取核心动画层的动画绘制层对象则执行步骤S5;
步骤S4:所述控件判断当前的绘制模式是否是核心动画绘制模式,是则执行步骤S4-1,否则执行步骤S4-2;
步骤S4-1:所述控件给所述浏览器返回核心动画绘制模式信息,返回执行步骤S1;
步骤S4-2:所述控件给所述浏览器返回错误提示信息,结束;
步骤S5:所述控件判断所述控件存储对象中是否有动画绘制层对象,是则执行步骤S5-1,否则执行步骤S5-2;
步骤S5-1:所述控件给所述浏览器返回动画绘制层对象,然后返回执行步骤S1,
步骤S5-2:所述控件创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,所述控件给所述浏览器返回当前的动画绘制层对象,然后返回执行步骤S1;
具体的,将绘制函数对象添加到控制层对象中,相当于在控制层添加了与所述绘制函数对象对应的接口函数即绘制函数的实现。
当所述控件给所述浏览器返回动画绘制层对象之后还包括:当所述动画绘制层对象中的控制层对象的绘制函数被调用时,所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
本实施例提供的控件,通过上述第一接口函数和第三接口函数,实现了在核心动画绘制模式下绘制嵌套窗口并在浏览器页面显示嵌套窗口的功能,从而达到在Mac OS X平台使用Webkit为浏览器内核的浏览器也可以支持页面内嵌套窗口的效果。
实施例2
本实施例2提供的一种支持嵌套窗口的控件的实现方法,通过浏览器加载控件,从而调用控件中的具体接口函数来实现,本实施例中,所述控件包含有第一接口函数、第二接口函数和第三接口函数,如图2所示,该方法包括:
步骤1:控件等待被调用;
当第一接口函数被调用时执行步骤2,当第二接口函数被调用时执行步骤5,当第三接口函数被调用时执行步骤7;
本实施例中具体的,第一接口函数为新建函数NPP_New,第二接口函数为窗口设置函数NPP_SetWindow,第三接口函数为数据获取函数NPP_GetValue。
步骤2:控件创建控件存储对象,设置绘制模式为核心动画绘制模式;
具体的,控件创建的控件存储对象为PluginObject obj,所述设置绘制模式为核心动画绘制模式,具体为:将NPPVpluginDrawingModel设置为NPDrawingModelCoreAnimation。
步骤3:控件根据传入的控件属性参数解析出控件属性数据,并将控件属性数据保存到控件存储对象中;
具体的,本实施例中所述控件属性数据包括窗口属性数据,如窗口大小、窗口边框颜色、窗口背景颜色、以及窗口显示字体的颜色。
例如:传入的控件属性参数如下:width、height、backColor、borderColor、textColor,其中,width和height是用于确定窗口大小的数据,具体的width和height分别为窗口的宽和高;backColor、borderColor和textColor是用于确定显示颜色的数据,具体的backColor为窗口背景颜色,borderColor为窗口边框颜色,textColor为窗口显示字体的颜色。
步骤4:控件给浏览器返回创建成功信息,然后返回执行步骤1。
具体的,控件给浏览器返回NPERR_NO_ERROR。
步骤5:控件根据传入的绘制窗口参数得到输入框对象,将输入框对象添加到插件存储对象中;
具体的,传入的绘制窗口参数为NPWindow,得到输入框对象为NPWindowWindow,其中,NPWindow为输入框对象类型,Window为输入框对象名称。
步骤6:控件给浏览器返回设置成功信息,然后返回执行步骤1。
例如,控件给浏览器返回NPERR_NO_ERROR。
步骤7:控件根据传入的获取参数判断要获取的数据类别,若是获取核心动画绘制模式信息则执行步骤8,若是获取脚本类型对象则执行步骤11,若是获取核心动画层的动画绘制层对象则执行步骤14;
具体的,传入的获取参数为Value,控件判断Value的取值,若为NPPVpluginDrawingModel则表示要获取的数据类别为获取核心动画绘制模式信息,若为NPPVpluginScriptableNPObject则表示要获取的数据类别为获取脚本类型对象,若为NPPVpluginCoreAnimationLayer则表示要获取的数据类别为获取核心动画层的动画绘制层对象。
步骤8:控件判断绘制模式是否是核心动画绘制模式,是则执行步骤9,否则执行步骤10;
具体的,控件获取NPPVplugInDrawingModel并判断是否等于NPDrawingModelCoreAnimation,是则执行步骤9,否则执行步骤10。
步骤9:控件给浏览器返回核心动画绘制模式信息,返回执行步骤1;
具体的,控件给浏览器返回NPDrawingModelCoreAnimation。
步骤10:控件给浏览器返回不支持核心动画绘制模式信息,返回执行步骤1;
例如,控件给浏览器返回NPERR_INCOMPATIBLE_VERSION_ERROR。
步骤11:控件判断控件存储对象中是否有控件脚本对象,是则执行步骤13,否则执行步骤12;
具体的,控件判断控件存储对象中是否存在对象类型为NPObject的对象,若存在则表示有控件脚本对象,执行步骤13,否则执行步骤12。
步骤12:控件创建控件脚本对象,将控件脚本对象添加到控件存储对象中,执行步骤13;
例如,创建的控件脚本对象为NPObject obj,其中NPObject为对象类型,obj为对象名称。
步骤13:控件给浏览器返回控件脚本对象,返回执行步骤1;
步骤14:控件判断控件存储对象中是否有动画绘制层对象,是则执行步骤18,否则执行步骤15;
步骤15:控件创建动画绘制层对象和控制层对象;
例如,创建的动画绘制层对象类型和控制层对象类型均为CALayer,动画绘制层对象命名为rootLayer,控制层对象命名ctrlLayer,则本步骤创建的动画绘制层对象为CALayer rootLayer,创建的控制层对象为CALayer ctrlLayer。
步骤16:控件将控件存储对象中保存的控件属性数据赋值给控制层对象,创建绘制函数对象,并将绘制函数对象添加到控制层对象中;
具体的,创建的绘制函数对象为drawInContext。实现控制层的绘制函数对象的接口函数是绘制函数,具体为drawInContext。
步骤17:控件将控制层对象添加到动画绘制层对象中,将动画绘制层对象添加到控件存储对象中,执行步骤18;
步骤18:控件给浏览器返回动画绘制层对象,然后返回执行步骤1。
具体的,控件给浏览器返回动画绘制层对象CALayer rootLayer之后,浏览器会调用控制层的绘制函数drawInContext在浏览器页面显示嵌套窗口。
本实施例提供的控件,实现了在核心动画绘制模式下绘制嵌套窗口并在浏览器页面显示嵌套窗口的功能,从而达到在Mac OS X平台使用Webkit为浏览器内核的浏览器也可以支持页面内嵌套窗口的效果。
实施例3
在实施例1和实施例2的基础上,本实施例3提供的一种支持嵌套窗口的控件的实现方法,所述控件包含有第一接口函数、第二接口函数、第三接口函数、第四接口函数和第五接口函数。本实施例中,控件被浏览器加载时实现的嵌套窗口具有显示以及处理鼠标和键盘事件的功能。优选的,第一接口函数为新建函数NPP_New,第二接口函数为窗口设置函数NPP_SetWindow,第三接口函数为数据获取函数NPP_GetValue,第四接口函数为事件处理函数NPP_HandleEvent,第五接口函数为实例销毁函数NPP_Destroy。
所述控件被浏览器加载时,控件中的各个具体接口函数依次被调用,控件根据函数返回组成响应信息返回给浏览器,进而在浏览器页面上实现具有显示以及处理鼠标和键盘事件功能的嵌套窗口,本实施例中涉及的具体接口函数的操作如下:
当第一接口函数被调用时,如图3所示,执行以下步骤:
步骤101:创建控件存储对象;
步骤102:判断浏览器是否支持核心动画绘制模式,是则执行步骤103,否则执行步骤105;
步骤103:设置绘制模式为核心动画绘制模式;
步骤104:解析传入的控件属性参数得到控件属性数据,并将控件属性数据保存到控件存储对象中,函数返回第一预设值,退出;
例如,第一预设值为NPERR_NO_ERROR。
具体的,本实施例中所述控件具有显示和鼠标及键盘处理功能,所述控件属性数据包括窗口属性数据,如窗口大小、窗口边框颜色、窗口背景颜色、以及窗口显示字体的颜色;还包括键盘属性数据,如键盘类型属性、软键盘属性。
相应的,函数返回第一预设值,控件给浏览器返回创建成功信息。
步骤105:函数返回第三预设值,退出。
例如,第三预设值为
NPERR_INCOMPATIBLE_VERSION_ERROR。
相应的,控件向浏览器返回版本不兼容信息。
当第二接口函数被调用时,如图4所示,执行以下步骤:
步骤201:根据传入的绘制窗口参数得到输入框对象,将输入框对象保存到控件存储对象中,函数返回第一预设值,退出。
相应的,控件给所述浏览器返回设置成功信息。
当第三接口函数被调用时,如图5所示,执行以下步骤:
步骤301:解析传入的获取参数,根据解析结果判断要获取的数据类别,若是获取核心动画绘制模式则执行步骤302,若是获取脚本类型对象则执行步骤305,若是获取核心动画层的动画绘制层对象则执行步骤308;
步骤302:判断绘制模式是否是核心动画绘制模式,是则执行步骤303,否则执行步骤304;
步骤303:函数返回核心动画绘制模式,退出;
步骤304:函数返回第二预设值,退出;
例如,第二预设值为NPERR_GENERIC_ERROR。
相应的,控件给所述浏览器返回错误提示信息。
步骤305:判断控件存储对象中是否存在控件脚本对象,是则执行步骤307,否则执行步骤306;
步骤306:创建控件控件脚本对象,将控件脚本对象添加到控件存储对象中,执行步骤307;
步骤307:函数返回控件脚本对象,退出;
步骤308:判断控件存储对象中是否存在核心动画层的动画绘制层对象,是则执行步骤312,否则执行步骤309;
步骤309:创建核心动画层的动画绘制层对象,创建控制层对象;
步骤310:将控件存储对象中保存的控件属性数据赋值给控制层对象,创建绘制函数对象并添加到控制层对象中;
具体的,创建绘制函数对象并添加到控制层对象中,从而实现所述绘制函数对象的接口函数即绘制函数,具体为drawInContext。
步骤311:将控制层对象添加到动画绘制层对象中,并将动画绘制层对象添加到控件存储对象中;
步骤312:函数返回动画绘制层对象,退出。
相应的,控件给浏览器返回所述动画绘制层对象。
具体的,控件给浏览器返回所述动画绘制层对象之后还包括,当所述动画绘制层对象中的控制层对象的绘制函数drawInContext被调用时,所述控件绘制嵌套窗口并在浏览器页面内显示。
优选的,当所述绘制函数被调用时还包括:所述控件获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;所述控件根据控件属性数据调用CGContextDrawImage绘制所述嵌套窗口,并在浏览器页面内显示。
所述控件根据控件属性数据调用CGContextDrawImage绘制所述嵌套窗口具体为,所述控件从预设数组中获取与控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为绘制得到的嵌套窗口显示在所述浏览器页面内。
当第四接口函数被调用时,如图6所述,执行以下步骤:
步骤401:解析传入的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则执行步骤402,若触发事件为鼠标抬起则执行步骤406,若触发事件为键盘按下则执行步骤407;
具体的,传入的事件类型参数为event,判断event的取值,若为NPCocoaEventMouseDown则表示触发事件为鼠标按下,若为NPCocoaEventMouseUp则表示触发事件为鼠标抬起,若为NPCocoaEventKeyDown则表示触发事件为键盘按下。
步骤402:对控件存储对象中保存的输入框对象以及传入的坐标参数使用预设算法进行计算得到鼠标坐标值;
具体的,输入框对象为window,输入框对象中包含有绘制窗口大小参数width和height,传入的坐标参数为event->data.mouse.pluginX和event->data.mouse.pluginY,预设算法为CGPointMake,计算得到的鼠标坐标值类型为CGPoint。
例如,window的参数width=225,height=36;传入坐标参数pluginX=154,pluginY=19,计算得到的鼠标坐标值是:x=154,y=17。
步骤403:根据控制层对象判断所述鼠标坐标值是否在控制层范围内,是则执行步骤404,否则执行步骤405;
具体的,从控制层对象中获取用于确定控件窗口大小的数据width和height,判断所述鼠标坐标值是否不超出width和height所表示的大小范围,是则执行步骤404,否则执行步骤405。
步骤404:置位鼠标焦点标志,函数返回触发响应,退出;
例如,置isCursorOn=true,函数返回触发响应,相应的,控件给浏览器返回所述触发响应。
步骤405:复位鼠标焦点标志,函数返回第一预设值,退出;
例如,置isCursorOn=false,函数返回第一预设值,相应的,控件给浏览器返回执行成功信息。
优选的,上述步骤404还可以替换为:置位鼠标焦点标志,并执行:所述控件根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型并弹出软键盘,函数返回触发响应,退出;否则根据所述键盘属性数据设置键盘类型,函数返回触发响应,退出。
步骤406:函数返回第一预设值,退出;
相应的,控件给所述浏览器返回执行成功信息。
可选的,本步骤还可以是没有函数返回,直接退出。
步骤407:判断是否为功能键按下,是则执行步骤408,否则执行步骤410;
具体的,根据传入参数的数值判断是否属于功能键键值范畴,是则判断为功能键按下,执行步骤408,否则执行步骤410。
步骤408:根据功能键类型处理触发事件;
步骤409:函数返回触发响应,退出;
本实施例中具体的,通过调用接口setNeedsDisplay()实现函数返回触发响应。
步骤410:在控件存储对象中记录按键内容;
步骤411:函数返回触发响应,退出;
本实施例中,当函数返回触发响应时,所述控件给所述浏览器返回所述触发响应,所述控件给所述浏览器返回触发响应之后还包括:当所述控件的动画绘制层对象中的控制层对象的绘制函数被调用时,更新浏览器页面内的所述嵌套窗口。
优选的,所述更新浏览器页面内的所述嵌套窗口具体为,通过绘制函数drawInContext的实现流程重新绘制嵌套窗口并在浏览器页面内显示。
当第五接口函数被调用时,如图7所述,执行以下步骤:
步骤501:释放控件存储对象的内存空间,函数返回第一预设值,退出。
相应的,控件给所述浏览器返回所述第一预设值。
进一步的,当第三接口函数被调用,控件向浏览器返回动画绘制层对象时,浏览器会根据所述动画绘制层对象调用到控制层的绘制函数完成嵌套窗口的绘制和显示;当第四接口函数被调用,控件向浏览器返回触发响应时,浏览器会再次调用所述绘制函数更新所述嵌套窗口。如图7所示,浏览器调用控制层的绘制函数完成窗口的绘制和更新的具体操作如下:
当控件的控制层的绘制函数被调用时,如图8所示,执行以下步骤:
步骤601:根据控件存储对象中存储的控件属性数据绘制嵌套窗口;
具体的,根据控件属性数据中的窗口属性数据,如窗口大小、窗口边框颜色、窗口背景颜色、以及窗口显示字体的颜色绘制嵌套窗口。
进一步的,本步骤还包括:在浏览器页面内显示所述嵌套窗口。
步骤602:判断鼠标焦点标志是否置位,是则执行步骤603,否则执行步骤604;
步骤603:启动鼠标闪烁定时器,并在绘制的窗口中显示鼠标闪烁,执行步骤605;
步骤604:关闭鼠标闪烁定时器;
步骤605:根据控件存储对象中的按键内容获取显示内容,并显示在嵌套窗口中,退出。
进一步的,步骤601还可以包括:所述控件获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
相应的步骤605具体为:所述控件根据控件存储对象中记录的按键内容,调用CGContextDrawImage从预设数组中获取与之对应的预设格式对象,并将所述预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
优选的,上述步骤605之后还可以包括:所述控件根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标,否则结束。
实施例4
本实施例提供了一种支持嵌套窗口的控件的实现装置,包括触发模块、第一接口函数操作模块和第三接口函数操作模块;
所述触发模块,用于当接收到浏览器调用第一接口函数的通知时,触发第一接口函数操作模块,用于当接收到浏览器调用第三接口函数的通知时,触发第三接口函数操作模块;
所述第一接口函数操作模块,用于创建控件存储对象,设置绘制模式为核心动画绘制模式,根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;给所述浏览器返回创建成功信息;
可选的,所述第一接口函数操作模块,还用于判断所述浏览器是否支持核心动画绘制模式,是则执行所述设置绘制模式为核心动画绘制模式,否则向所述浏览器返回版本不兼容信息;
上述第一接口函数操作模块的功能中所述判断所述浏览器是否支持核心动画绘制模式可以具体为:向所述浏览器发送获取浏览器所支持的绘制模式的请求,并根据所述浏览器返回的请求响应判断所述浏览器是否支持核心动画绘制模式。
所述第三接口函数操作模块包括第一判断模块、第二判断模块、第三判断模块和嵌套窗口绘制模块;
所述第一判断模块,用于根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则触发第二判断模块,若是获取核心动画层的动画绘制层对象则触发第三判断模块;
所述第二判断模块,用于判断当前的绘制模式是否是核心动画绘制模式,是则给所述浏览器返回核心动画绘制模式信息,否则给所述浏览器返回错误提示信息;
所述第三判断模块,用于判断所述控件存储对象中是否有动画绘制层对象,是则给所述浏览器返回动画绘制层对象,否则创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,给所述浏览器返回当前的动画绘制层对象;
所述嵌套窗口绘制模块,用于当所述动画绘制层对象中的控制层对象的绘制函数被调用时,根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
优选的,本实施例的装置还包括第二接口函数操作模块和第四接口函数操作模块;所述触发模块,还用于当接收到浏览器调用第二接口函数的通知时,触发第二接口函数操作模块,还用于当接收到浏览器调用第四接口函数的通知时,触发第四接口函数操作模块;
所述第二接口函数操作模块,用于根据所述浏览器传来的绘制窗口参数得到输入框对象,将输入框对象添加到所述控件存储对象中,给所述浏览器返回设置成功信息。
所述第四接口函数操作模块包括解析判断模块、鼠标按下事件处理模块和键盘按下事件处理模块;
所述解析判断模块,用于解析所述浏览器传来的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则触发所述鼠标按下事件处理模块;若触发事件为键盘按下则触发所述键盘按下事件处理模块;
所述鼠标按下事件处理模块,用于根据控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数计算得到鼠标坐标值,根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志,给所述浏览器返回触发响应;
可选的,所述控件属性数据包括窗口属性数据;所述鼠标按下事件处理模块,具体用于对控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数使用预设算法进行计算得到鼠标坐标值,从控制层对象中获取控件属性数据,根据所述控件属性数据中的窗口属性数据判断所述鼠标坐标值是否在控制层范围内,是则置位鼠标焦点标志,给所述浏览器返回触发响应;否则复位鼠标焦点标志,给所述浏览器返回执行成功信息。例如,所述窗口属性数据可以是窗口大小、窗口边框颜色、窗口背景颜色、以及窗口显示字体的颜色。
可选的,所述控件属性数据还可以包括键盘属性数据;所述鼠标按下事件处理模块,还可以用于根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型并弹出软键盘,给所述浏览器返回触发响应;否则根据所述键盘属性数据设置键盘类型,给所述浏览器返回触发响应。优选的,所述弹出软键盘具体为:根据所述控件属性数据中的窗口属性数据和所述鼠标坐标值确定软键盘的弹出位置并在浏览器页面中弹出。
所述键盘按下事件处理模块,用于判断是否为功能键按下,是则根据功能键类型处理触发事件,给所述浏览器返回触发响应;否则在控件存储对象中记录按键内容,给所述浏览器返回触发响应;
可选的,所述解析判断模块,还用于当判断触发事件类型为鼠标抬起时,给所述浏览器返回执行成功信息。
所述给所述浏览器返回触发响应之后,当所述动画绘制层对象中的控制层对象的绘制函数被调用时,所述嵌套窗口绘制模块,用于更新浏览器页面内的所述嵌套窗口。
本实施例中具体的,所述更新浏览器页面内的所述嵌套窗口具体为重新绘制所述嵌套窗口并在浏览器页面内显示。
可选的,所述嵌套窗口绘制模块具体包括绘制单元、判断单元、启动单元和获取单元;
所述绘制单元,用于根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口;
所述判断单元,用于判断鼠标焦点标志是否置位,是则触发启动单元,否则关闭鼠标闪烁定时器,触发所述获取单元;
所述启动单元,用于启动鼠标闪烁定时器,在浏览器页面内的嵌套窗口中显示鼠标闪烁,并触发获取单元;
所述获取单元,用于根据控件存储对象中记录的按键内容获取显示内容,并显示在所述嵌套窗口中。
进一步的,所述嵌套窗口绘制模块还具体包括贴图单元;
所述贴图单元,用于根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标。
可选的,所述嵌套窗口绘制模块还可以包括设置单元;
所述设置单元,用于获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
相应的所述绘制单元,具体用于从预设数组中获取与所述控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为所述嵌套窗口在浏览器页面内显示;
相应的所述获取单元,具体用于根据控件存储对象中记录的按键内容,从预设数组中获取与之对应的预设格式对象,并将所述预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
可选的,本实施例的装置还包括第五接口函数操作模块;
所述触发模块,还用于当接收到浏览器调用第五接口函数的通知时,触发第五接口函数操作模块,
所述第五接口函数操作模块,用于释放所述控件存储对象的内存空间,给所述浏览器返回执行成功信息。
本实施例中可选的,所述第一判断模块,还用于当根据所述浏览器传来的获取参数判断浏览器要获取的数据类别是获取脚本类型对象时触发第四判断模块;
所述第四判断模块,用于判断控件存储对象中是否存在控件脚本对象,是则给所述浏览器返回所述控件存储对象中保存的控件脚本对象,否则创建控件脚本对象,并将创建的控件脚本对象添加到控件存储对象中,给所述浏览器返回创建的控件脚本对象。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (26)
1.一种支持嵌套窗口的控件的实现方法,其特征在于,包括:
步骤S1:控件等待被浏览器调用,当控件的第一接口函数被调用时,执行步骤S2,当控件的第三接口函数被调用时,执行步骤S3;所述第一接口函数为新建函数NPP_New,所述第三接口函数为数据获取函数NPP_GetValue;
步骤S2:所述控件创建控件存储对象,设置绘制模式为核心动画绘制模式,所述控件根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;所述控件给所述浏览器返回创建成功信息,然后返回执行步骤S1;
步骤S3:所述控件根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则执行步骤S4,若是获取核心动画层的动画绘制层对象则执行步骤S5;
步骤S4:所述控件判断当前的绘制模式是否是核心动画绘制模式,是则所述控件给所述浏览器返回核心动画绘制模式信息,返回执行步骤S1;否则所述控件给所述浏览器返回错误提示信息,结束;
步骤S5:所述控件判断所述控件存储对象中是否有动画绘制层对象,是则所述控件给所述浏览器返回动画绘制层对象,然后返回执行步骤S1,否则所述控件创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,所述控件给所述浏览器返回当前的动画绘制层对象,然后返回执行步骤S1;
所述步骤S5之后还包括:当所述动画绘制层对象中的控制层对象的绘制函数被调用时,所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
2.根据权利要求1所述的方法,其特征在于,所述设置绘制模式为核心动画绘制模式之前还包括:所述控件判断所述浏览器是否支持核心动画绘制模式,是则执行所述设置绘制模式为核心动画绘制模式,否则所述控件向所述浏览器返回版本不兼容信息,结束。
3.根据权利要求2所述的方法,其特征在于,所述控件判断所述浏览器是否支持核心动画绘制模式具体为:所述控件向所述浏览器发送获取浏览器所支持的绘制模式的请求,并根据所述浏览器返回的请求响应判断所述浏览器是否支持核心动画绘制模式。
4.根据权利要求1所述的方法,其特征在于,所述步骤S1中还包括:当控件的第二接口函数被调用时,所述控件根据所述浏览器传来的绘制窗口参数得到输入框对象,将输入框对象添加到所述控件存储对象中,所述控件给所述浏览器返回设置成功信息,然后返回执行步骤S1;
所述第二接口函数为窗口设置函数NPP_SetWindow。
5.根据权利要求4所述的方法,其特征在于,所述步骤S1中还包括:当控件的第四接口函数被调用时,执行步骤S6;所述第四接口函数为事件处理函数NPP_HandleEvent;
步骤S6:所述控件解析所述浏览器传来的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则执行步骤S7,若触发事件为鼠标抬起则返回执行步骤S1;若触发事件为键盘按下则执行步骤S8;
步骤S7:所述控件根据控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数计算得到鼠标坐标值,根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志,所述控件给所述浏览器返回触发响应,返回执行步骤S1;
步骤S8:所述控件判断是否为功能键按下,是则根据功能键类型处理触发事件,所述控件给所述浏览器返回触发响应,返回执行步骤S1;否则所述控件在控件存储对象中记录按键内容,所述控件给所述浏览器返回触发响应,返回执行步骤S1;
所述控件给所述浏览器返回触发响应之后还包括:当所述动画绘制层对象中的控制层对象的绘制函数被调用时,更新浏览器页面内的所述嵌套窗口。
6.根据权利要求5所述的方法,其特征在于,所述控件属性数据包括窗口属性数据;所述步骤S7具体为:
所述控件对控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数使用预设算法进行计算得到鼠标坐标值,从控制层对象中获取控件属性数据,根据所述控件属性数据中的窗口属性数据判断所述鼠标坐标值是否在控制层范围内,是则置位鼠标焦点标志,所述控件给所述浏览器返回触发响应,返回执行步骤S1;否则复位鼠标焦点标志,所述控件给所述浏览器返回执行成功信息,返回执行步骤S1;
所述预设算法为CGPointMake。
7.根据权利要求5所述的方法,其特征在于,所述控件属性数据包括键盘属性数据;所述步骤S7中所述根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志之后还包括:所述控件根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型并弹出软键盘,给所述浏览器返回触发响应,返回执行步骤S1;否则根据所述键盘属性数据设置键盘类型,给所述浏览器返回触发响应,返回执行步骤S1。
8.根据权利要求7所述的方法,其特征在于,所述控件属性数据还包括窗口属性数据,所述弹出软键盘具体为:根据所述控件属性数据中的窗口属性数据和所述鼠标坐标值确定软键盘的弹出位置并在浏览器页面中弹出。
9.根据权利要求5所述的方法,其特征在于,所述当所述动画绘制层对象中的控制层对象的绘制函数被调用时,更新浏览器页面内的所述嵌套窗口,具体包括:
步骤1:所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示嵌套窗口;
步骤2:所述控件判断鼠标焦点标志是否置位,是则执行步骤3,否则所述控件关闭鼠标闪烁定时器,执行步骤4;
步骤3:所述控件启动鼠标闪烁定时器,在浏览器页面内的嵌套窗口中显示鼠标闪烁,执行步骤4;
步骤4:所述控件根据控件存储对象中记录的按键内容获取显示内容,并显示在所述嵌套窗口中。
10.根据权利要求9所述的方法,其特征在于,所述步骤4之后还包括:
步骤5:所述控件根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标,否则结束。
11.根据权利要求9或10所述的方法,其特征在于,所述步骤1还包括:所述控件获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
所述控件根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示嵌套窗口,具体为:所述控件从预设数组中获取与所述控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为所述嵌套窗口在浏览器页面内显示;
所述步骤4具体为:所述控件根据控件存储对象中记录的按键内容,从预设数组中获取与之对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
12.根据权利要求1所述的方法,其特征在于,所述步骤S1中还包括:当控件的第五接口函数被调用时,所述控件释放所述控件存储对象的内存空间,所述控件给所述浏览器返回执行成功信息,返回执行步骤S1;
所述第五接口函数为实例销毁函数NPP_Destroy。
13.根据权利要求1所述的方法,其特征在于,所述步骤S3还包括:当所述控件判断所述浏览器要获取的数据类别是获取脚本类型对象时,所述控件判断所述控件存储对象中是否存在控件脚本对象,是则所述控件给所述浏览器返回所述控件存储对象中保存的控件脚本对象,否则所述控件创建控件脚本对象,并将创建的控件脚本对象添加到控件存储对象中,给所述浏览器返回创建的控件脚本对象。
14.一种支持嵌套窗口的控件的实现装置,其特征在于:包括触发模块、第一接口函数操作模块和第三接口函数操作模块;
所述触发模块,用于当接收到浏览器调用第一接口函数的通知时,触发第一接口函数操作模块,用于当接收到浏览器调用第三接口函数的通知时,触发第三接口函数操作模块;所述第一接口函数为新建函数NPP_New,所述第三接口函数为数据获取函数NPP_GetValue;
所述第一接口函数操作模块,用于创建控件存储对象,设置绘制模式为核心动画绘制模式,根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中;给所述浏览器返回创建成功信息;
所述第三接口函数操作模块包括第一判断模块、第二判断模块、第三判断模块和嵌套窗口绘制模块;
所述第一判断模块,用于根据所述浏览器传来的获取参数判断浏览器要获取的数据类别,若是获取核心动画绘制模式信息则触发第二判断模块,若是获取核心动画层的动画绘制层对象则触发第三判断模块;
所述第二判断模块,用于判断当前的绘制模式是否是核心动画绘制模式,是则给所述浏览器返回核心动画绘制模式信息,否则给所述浏览器返回错误提示信息;
所述第三判断模块,用于判断所述控件存储对象中是否有动画绘制层对象,是则给所述浏览器返回动画绘制层对象,否则创建动画绘制层对象、控制层对象和绘制函数对象,先将控件存储对象中的控件属性数据和绘制函数对象添加到控制层对象中,再将控制层对象添加到动画绘制层对象中,最后将动画绘制层对象添加到控件存储对象中,给所述浏览器返回当前的动画绘制层对象;
所述嵌套窗口绘制模块,用于当所述动画绘制层对象中的控制层对象的绘制函数被调用时,根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口。
15.根据权利要求14所述的装置,其特征在于:所述第一接口函数操作模块,还用于判断所述浏览器是否支持核心动画绘制模式,是则执行所述设置绘制模式为核心动画绘制模式,否则向所述浏览器返回版本不兼容信息。
16.根据权利要求15所述的装置,其特征在于:所述第一接口函数操作模块,具体用于创建控件存储对象,向所述浏览器发送获取浏览器所支持的绘制模式的请求,并根据所述浏览器返回的请求响应判断所述浏览器是否支持核心动画绘制模式,是则设置绘制模式为核心动画绘制模式,根据所述浏览器传来的控件属性参数解析出控件属性数据,并将控件属性数据保存到所述控件存储对象中,给所述浏览器返回创建成功信息;否则向所述浏览器返回版本不兼容信息。
17.根据权利要求14所述的装置,其特征在于:所述装置还包括第二接口函数操作模块;
所述触发模块,还用于当接收到浏览器调用第二接口函数的通知时,触发第二接口函数操作模块,所述第二接口函数为窗口设置函数NPP_SetWindow;
所述第二接口函数操作模块,用于根据所述浏览器传来的绘制窗口参数得到输入框对象,将输入框对象添加到所述控件存储对象中,给所述浏览器返回设置成功信息。
18.根据权利要求17所述的装置,其特征在于:所述装置还包括第四接口函数操作模块;
所述触发模块,还用于当接收到浏览器调用第四接口函数的通知时,触发第四接口函数操作模块;所述第四接口函数为事件处理函数NPP_HandleEvent;
所述第四接口函数操作模块包括解析判断模块、鼠标按下事件处理模块和键盘按下事件处理模块;
所述解析判断模块,用于解析所述浏览器传来的事件类型参数,根据解析结果判断触发事件类型,若触发事件为鼠标按下则触发所述鼠标按下事件处理模块;若触发事件为键盘按下则触发所述键盘按下事件处理模块;
所述鼠标按下事件处理模块,用于根据控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数计算得到鼠标坐标值,根据所述鼠标坐标值与所述控制层对象的位置关系设置鼠标焦点标志,给所述浏览器返回触发响应;
所述键盘按下事件处理模块,用于判断是否为功能键按下,是则根据功能键类型处理触发事件,给所述浏览器返回触发响应;否则在控件存储对象中记录按键内容,给所述浏览器返回触发响应;
所述嵌套窗口绘制模块,还用于当给所述浏览器返回所述触发响应之后所述绘制函数被调用时,更新浏览器页面内的所述嵌套窗口。
19.根据权利要求18所述的装置,其特征在于:所述控件属性数据包括窗口属性数据;
所述鼠标按下事件处理模块,具体用于对控件存储对象中保存的输入框对象以及所述浏览器传来的坐标参数使用预设算法进行计算得到鼠标坐标值,从控制层对象中获取控件属性数据,根据所述控件属性数据中的窗口属性数据判断所述鼠标坐标值是否在控制层范围内,是则置位鼠标焦点标志,给所述浏览器返回触发响应;否则复位鼠标焦点标志,给所述浏览器返回执行成功信息;
所述预设算法为CGPointMake。
20.根据权利要求18所述的装置,其特征在于:所述控件属性数据包括键盘属性数据;
所述鼠标按下事件处理模块,还用于根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型并弹出软键盘,给所述浏览器返回触发响应;否则根据所述键盘属性数据设置键盘类型,给所述浏览器返回触发响应。
21.根据权利要求20所述的装置,其特征在于:所述控件属性数据还包括窗口属性数据;
所述鼠标按下事件处理模块,还具体用于根据所述控件存储对象中的键盘属性数据判断是否支持软键盘,是则根据所述键盘属性数据设置键盘类型,根据所述控件属性数据中的窗口属性数据和所述鼠标坐标值确定软键盘的弹出位置并在浏览器页面中弹出,给所述浏览器返回触发响应;否则根据所述键盘属性数据设置键盘类型,给所述浏览器返回触发响应。
22.根据权利要求18所述的装置,其特征在于,所述嵌套窗口绘制模块具体包括绘制单元、判断单元、启动单元和获取单元;
所述绘制单元,用于根据控件存储对象中存储的控件属性数据绘制嵌套窗口,在浏览器页面内显示所述嵌套窗口;
所述判断单元,用于判断鼠标焦点标志是否置位,是则触发启动单元,否则关闭鼠标闪烁定时器,触发所述获取单元;
所述启动单元,用于启动鼠标闪烁定时器,在浏览器页面内的嵌套窗口中显示鼠标闪烁,并触发获取单元;
所述获取单元,用于根据控件存储对象中记录的按键内容获取显示内容,并显示在所述嵌套窗口中。
23.根据权利要求22所述的装置,其特征在于,所述嵌套窗口绘制模块还具体包括贴图单元;
所述贴图单元,用于根据所述控件存储对象中存储的控件属性数据判断是否支持软键盘,是则根据浏览器传来的位置参数确定贴图位置,获取预先设定的按钮图标资源,根据所述按钮图标资源在所述贴图位置绘制软键盘按钮图标。
24.根据权利要求22或23所述的装置,其特征在于,所述嵌套窗口绘制模块还包括设置单元;
所述设置单元,用于获取预设图片资源,将所述预设图片资源中的所有压缩图片依次转换为预设格式对象,并存储到预设数组中;
所述绘制单元,具体用于从预设数组中获取与所述控件属性数据对应的预设格式对象,并将获取的预设格式对象对应的压缩图片作为所述嵌套窗口在浏览器页面内显示;
所述获取单元,具体用于根据控件存储对象中记录的按键内容,从预设数组中获取与之对应的预设格式对象,并将所述预设格式对象对应的压缩图片作为显示内容显示在所述嵌套窗口中。
25.根据权利要求14所述的装置,其特征在于:所述装置还包括第五接口函数操作模块;
所述触发模块,还用于当接收到浏览器调用第五接口函数的通知时,触发第五接口函数操作模块;所述第五接口函数为实例销毁函数NPP_Destroy;
所述第五接口函数操作模块,用于释放所述控件存储对象的内存空间,给所述浏览器返回执行成功信息。
26.根据权利要求14所述的装置,其特征在于:所述第三接口函数操作模块还包括第四判断模块,所述第一判断模块,还用于当根据所述浏览器传来的获取参数判断浏览器要获取的数据类别是获取脚本类型对象时触发第四判断模块;
所述第四判断模块,用于判断控件存储对象中是否存在控件脚本对象,是则给所述浏览器返回所述控件存储对象中保存的控件脚本对象,否则创建控件脚本对象,并将创建的控件脚本对象添加到控件存储对象中,给所述浏览器返回创建的控件脚本对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810151516.4A CN108304182B (zh) | 2018-02-14 | 2018-02-14 | 一种支持嵌套窗口的控件的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810151516.4A CN108304182B (zh) | 2018-02-14 | 2018-02-14 | 一种支持嵌套窗口的控件的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108304182A CN108304182A (zh) | 2018-07-20 |
CN108304182B true CN108304182B (zh) | 2020-11-24 |
Family
ID=62865189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810151516.4A Active CN108304182B (zh) | 2018-02-14 | 2018-02-14 | 一种支持嵌套窗口的控件的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108304182B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109242936A (zh) * | 2018-08-29 | 2019-01-18 | 广州优视网络科技有限公司 | 绘制目标内容数据的方法、装置、存储介质及电子设备 |
CN109597549B (zh) * | 2018-10-16 | 2020-11-03 | 西北铁道电子股份有限公司 | 一种基于SelfUI的GYK设备的人机交互系统 |
CN111124713B (zh) * | 2019-12-24 | 2024-03-26 | 北京安兔兔科技有限公司 | 设备系统函数调用方法、装置、终端设备和存储介质 |
CN114265659A (zh) * | 2021-12-27 | 2022-04-01 | 飞天诚信科技股份有限公司 | 一种iOS系统显示弹框的方法及装置 |
CN114168141A (zh) * | 2022-02-11 | 2022-03-11 | 北京金堤科技有限公司 | 一种基于组件的页面处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1293907A1 (en) * | 2000-04-17 | 2003-03-19 | Hotto Link, Inc. | Method for displaying browser screen, display system, and recording medium |
CN103279349A (zh) * | 2013-05-31 | 2013-09-04 | 正益无线(北京)科技有限公司 | 手机或pda的基于移动中间件的多窗口浏览系统 |
-
2018
- 2018-02-14 CN CN201810151516.4A patent/CN108304182B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1293907A1 (en) * | 2000-04-17 | 2003-03-19 | Hotto Link, Inc. | Method for displaying browser screen, display system, and recording medium |
CN103279349A (zh) * | 2013-05-31 | 2013-09-04 | 正益无线(北京)科技有限公司 | 手机或pda的基于移动中间件的多窗口浏览系统 |
Non-Patent Citations (1)
Title |
---|
"嵌入式浏览器布局绘制引擎的研究与实现";刘道宏;《中国优秀硕士学位论文全文数据库信息科技辑》;20111215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108304182A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304182B (zh) | 一种支持嵌套窗口的控件的实现方法及装置 | |
CN112269604B (zh) | 在Linux上兼容运行Android应用的窗口交互方法及装置 | |
US20210303108A1 (en) | System and method for on-screen graphical user interface encapsulation and reproduction | |
US10359902B2 (en) | Task flow interface in a popup region | |
CN108803964B (zh) | 浮标显示方法、装置、终端及存储介质 | |
JP3368188B2 (ja) | マルチタスク・データ処理システム及び方法 | |
US20120317506A1 (en) | Method and System for Executing a Graphics Application | |
WO2019047147A1 (zh) | 图标移动方法及装置 | |
CN111158686B (zh) | 网页弹框生成方法及装置、电子设备、存储介质 | |
WO2005109176A1 (ja) | ウィンドウ表示システム、ウィンドウ表示方法、プログラム開発支援装置及びサーバ装置 | |
CN114779987B (zh) | 显示内容的方法、装置、终端及存储介质 | |
CN113625932B (zh) | 一种全屏手写输入的方法及装置 | |
CN109361948B (zh) | 界面管理方法、智能终端及可读存储介质 | |
US11314391B2 (en) | Navigation bar controlling method and terminal | |
CN107580039B (zh) | 传输进度的显示方法、装置及终端 | |
CN110297624B (zh) | 基于electron框架的Widget系统的实现方法及采用该系统的电视机 | |
JP4177434B2 (ja) | ウィンドウ表示システム、情報処理システム、クライアント装置、電話機、情報機器、家電機器及び機器 | |
CN115202773A (zh) | 应用界面的显示方法、装置、终端及存储介质 | |
US11210449B2 (en) | Page display method and device and storage medium | |
CN110865718A (zh) | 一种支持输入法应用在多屏切换的方法和装置 | |
CN107704187B (zh) | 通知消息处理方法、装置及终端 | |
CN111240678B (zh) | 弹出窗口的设置方法及装置、电子设备、存储介质 | |
WO2019047184A1 (zh) | 信息显示方法、装置及终端 | |
CN113676677B (zh) | 动态图片合成方法、装置、电子设备及可读存储介质 | |
CN101587436A (zh) | 嵌入式设备中区域恢复的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |