当前位置:  编程技术>WEB前端
本页文章导读:
    ▪浏览器插件之ActiveX开发(二)           按照上文《浏览器插件之ActiveX开发(一)》的步骤,能开发一个基于MFC的简单的ActiveX控件。不过在实际操作中还是会遇到一些问题。由于对COM编程了解得很少很少,有些问.........
    ▪关于css优先级及怎样设计css书写      css大致有4个级别,一个是浏览器默认css,一个是外部css,一个是内部css,一个是内联css,他们的优先级逐渐提高,也就是内联css优先级最高,何为内联,就是标签里设置的css样式,举个例子&l.........
    ▪一些js代码,自己备用的(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)      跨浏览器基础事件 1 //跨浏览器添加事件 2 function addEvent(obj, type, fn) { 3 if (obj.addEventListener) { 4 obj.addEventListener(type, fn, false); 5 } else if (obj.attachEvent) { 6 obj.attachEvent('on' + type, fun.........

[1]浏览器插件之ActiveX开发(二)
    来源:    发布时间: 2013-11-06

     按照上文《浏览器插件之ActiveX开发(一)》的步骤,能开发一个基于MFC的简单的ActiveX控件。不过在实际操作中还是会遇到一些问题。由于对COM编程了解得很少很少,有些问题我也没有找到很好的解决方法。

     一、ActiveX需要引用其他dll的问题

      我们的ActiveX需要对IC卡设备进行读写,所以需要调用设备自带的接口。设备厂商提供了“mwhrf_bj.lib”、“mwhrf_bj.dll”和“mwrf32.h”等接口文件。将“mwhrf_bj.lib”和“mwrf32.h”添加到项目中,ActiveX的接口方法中就可以调用接口文件中的方法了。但是在编译时会出现“Project:error PRJ0050:未能注册输出。请尝试启用“每个用户的重定向”,或用提升权限从命令提示窗口中注册该组件”或“Project : error PRJ0050: Failed to register output. Please ensure you have the appropriate permissions to modify the registry”的错误。

     实际上该错误不是出现在编辑阶段,而是出现在注册编译后的ocx文件时。Vs.net 2008默认在编译成功后会自动注册编译后的ocx文件。右击项目名称,选择“Properties”,在弹出对话框的“Configurations Properties->Linker->General”中的Register Output就可以配置编译后是否自动注册ocx,如下图所示:

      

      之所以注册ocx时出错,是因为注册时找不到被调用的“mwhrf_bj.dll”文件。将被调用的“mwhrf_bj.dll”文件放在ocx文件相同目录下或者其他%PATH%路径下(如Windows文件夹或System32文件夹等),则注册ocx时不会报错。在vs.net开发环境中可以直接将要被调用的外部dll文件copy到Debug或Release目录下即可,也可以在PreBuild脚本里将外部dll文件COPY到编译目标文件夹,如:

      

 

       注:可参考“http://www.cnblogs.com/lidabo/archive/2012/07/16/2593604.html”文章。

 

     二、ActiveX的调试方法

        在Vs.net 2008下可以对ActiveX按如下方式进行调试:

        1、准备好Demo.html文件并写好测试程序,该页面中需通过<object />来引用需测试的ocx控件(关于如何在html页面中调用控件在后续文章将专门提及)。

        2、在vs.net 2008中右击项目名称,选择“Properties”,在弹出框中的Debugging配置页里配置好Command和CommandArgs参数:

            Command:        本地IE浏览器的路径,如“C:\Program Files\Internet Explorer\IEXPLORE.EXE”

            Command Args: 已经创建好的用于测试ocx的html文件路径(如上面提及的Demo.html文件路径)

           

        3、在程序中需调试的地方设置断点。按F5运行后vs.net将自动启动IE并打开对应的html测试文件,在断点处会中断运行进入调试状态。

本文链接


    
[2]关于css优先级及怎样设计css书写
    来源: 互联网  发布时间: 2013-11-06

css大致有4个级别,一个是浏览器默认css,一个是外部css,一个是内部css,一个是内联css,他们的优先级逐渐提高,也就是内联css优先级最高,何为内联,就是标签里设置的css样式,举个例子<p style="color:red">this is a paragraf.</p>这里直接在标签里设置的样式就是内联样式,而内部css就是在本页面里<style type="text/css">.body{color:red}</style>来书写的css,而外部css就是引入的外部css样式表了。


下面说一下css样式表的设计,刚开始的时候,我感觉如果2个选择器,或者多个选择器拥有相同的css样式,就应该将他们合并,这样既可以节省空间,有方便查看,但是,我的想法在实践中被无情的打击了,当你设计一个大型网站的css时,每一个选择器他们的样式是不固定的,有时候可能会不停的改变,这样入过一个样式修改了,和他公用的选择器怎么办?所以,不要怕浪费空间,而且对于css样式表来说也占用不了多少空间,所以设计css样式表的时候,最后为每一个选择器一个样式。另外,给选择器起名字的时候,最好起一些持久性的名字,什么意思呢?就是如果一个样式表示是黑天,你最好不要把它起为black,很可能将来黑天不一定选择black来表示,所以我的意思就是尽量起一个可以无论怎样改变样式,都能理解他是做什么用的。


@by 2013-01-23


作者:fujiafeihudui 发表于2013-1-23 21:43:37 原文链接
阅读:0 评论:0 查看评论

    
[3]一些js代码,自己备用的(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)
    来源:    发布时间: 2013-11-06

跨浏览器基础事件

1 //跨浏览器添加事件
2 function addEvent(obj, type, fn) {
3 if (obj.addEventListener) {
4 obj.addEventListener(type, fn, false);
5 } else if (obj.attachEvent) {
6 obj.attachEvent('on' + type, function () {
7 fn.call(obj);
8 });
9 }
10 }
11
12 //跨浏览器移除事件
13 function removeEvent(obj, type, fn) {
14 if (obj.removeEventListener) {
15 obj.removeEventListener(type, fn, false);
16 } else if (obj.detachEvent) {
17 obj.detachEvent('on' + type, fn);
18 }
19 }
20
21 //跨浏览器阻止默认行为
22 function preDef(evt) {
23 var e = evt || window.event;
24 if (e.preventDefault) {
25 e.preventDefault();
26 } else {
27 e.returnValue = false;
28 }
29 }
30
31 //跨浏览器获取目标对象
32 function getTarget(evt) {
33 if (evt.target) { //W3C
34 return evt.target;
35 } else if (window.event.srcElement) { //IE
36 return window.event.srcElement;
37 }
38 }
39
40 //跨浏览器获取字符编码
41 function getCharCode(evt) {
42 var e = evt || window.event;
43 if (typeof e.charCode == 'number') {
44 return e.charCode;
45 } else {
46 return e.keyCode;
47 }
48 }

浏览器检测

var client = function(){

//rendering engines
var engine = {
ie: 0,
gecko: 0,
webkit: 0,
khtml: 0,
opera: 0,

//complete version
ver: null
};

//browsers
var browser = {

//browsers
ie: 0,
firefox: 0,
safari: 0,
konq: 0,
opera: 0,
chrome: 0,

//specific version
ver: null
};


//platform/device/OS
var system = {
win: false,
mac: false,
x11: false,

//mobile devices
iphone: false,
ipod: false,
ipad: false,
ios: false,
android: false,
nokiaN: false,
winMobile: false,

//game systems
wii: false,

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3