Register

  • 点击获取
  •   

已有账号直接登录    

公告:

热门文章 网络编程socket之bind函数

时间:2016-8-17 作者:RainFly   分类: Linux嵌入式   热度: 4366°  评论:3  
时间:2016-8-17   分类: Linux嵌入式    热度:4366   评论:3
摘要 :在套接口中,一个套接字只是用户程序与内核交互信息的枢纽,它自身没有太多的信息,也没有网络协议地址和端口号等信息,在进行网络通信的时候,必须把一个套接字与一个地址相关联,这个过程就是地址绑定的过程。许多时候内核会我们自动绑定一个地址,然而有时用户可能需要自己来完成这个绑定的过程,以满足实际应用的需要,最典型的情况是一个服务器进程需要绑定一个众所周知的地址或端口以等待客户来连接。这个事由 bind的函数完成。

从bind函数功能我们很容易推测出这个函数的需要的参数与相应的返回值,如果此时大家已经对socket接口有点熟悉了:

#include<sys/socket.h> int bind( int sockfd, struct sockaddr* addr, socklen_t addrlen)

返回:0 ──成功, - 1 ──失败

参数sockfd

指定地址与哪个套接字绑定,这是一个由之前的socket函数调用返回的套接字。调用bind的函数之后,该套接字与一个相应的地址关联,发送到这个地址的数据可以通过这个套接字来读取与使用。

参数addr

指定地址。这是一个地址结构,并且是一个已经经过填写的有效的地址结构。调用bind之后这个地址与参数sockfd指定的套接字关联,从而实现上面所说的效果。

参数addrlen

正如大多数socket接口一样,内核不关心地址结构,当它复制或传递地址给驱动的时候,它依据这个值来确定需要复制多少数据。这已经成为socket接口中最常见的参数之一了。

bind函数并不是总是需要调用的,只有用户进程想与一个具体的地址或端口相关联的时候才需要调用这个函数。如果用户进程没有这个需要,那么程序可以依赖内核的自动的选址机制来完成自动地址选择,而不需要调用bind的函数,同时也避免不必要的复杂度。在一般情况下,对于服务器进程问题需要调用 bind函数,对于客户进程则不需要调用bind函数。

bind函数

int bind(SOCKET s,const struct sockaddr FAR *name,int namelen);

当创建了一个Socket以后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP地址和一个特定的端口号。客户程序一般不必调用bind函数来为其Socket绑定IP地址和断口号。该函数的第一个参数指定待绑定的Socket描述符;第二个参数指定一个sockaddr结构,该结构是这样定义的:

struct sockaddr {u_short sa_family;char sa_data[14];};

其中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中只有一个唯一的字段s_addr,表示IP地址,该字段是一个整数,一般用函数inet_addr()把字符串形式的IP地址转换成unsigned long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信;如果只给运行在多宿主机上的服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充 sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致。下面是一个bind函数调用的例子:

struct sockaddr_in saddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(8888); saddr.sin_addr.s_addr = htonl(INADDR_ANY); bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));

热门文章 通过PHP、JavaScript、判断是否为手机浏览器

时间:2016-8-16 作者:RainFly   分类: Web程序设计   热度: 9690°  评论:2  
时间:2016-8-16   分类: Web程序设计    热度:9690   评论:2

   总结一下,做个笔记。判断访问浏览器是电脑还是手机的判断方法。 一个是服务器执行语言,一个是浏览器运行语言

   PHP

     方法一

/** * * 根据php的$_SERVER['HTTP_USER_AGENT'] 中各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端 * @author discuz3x * @lastmodify 2014-04-09 * @return BOOL */ function checkmobile() { global $_G; $mobile = array(); //各个触控浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $touchbrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini', 'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung', 'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser', 'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource', 'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone', 'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop', 'benq', 'haier', '^lct', '320x320', '240x320', '176x220'); //window手机浏览器数组【猜的】 static $mobilebrowser_list =array('windows phone'); //wap浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $wmlbrowser_list = array('cect', 'compal', 'ctl', 'lg', 'nec', 'tcl', 'alcatel', 'ericsson', 'bird', 'daxian', 'dbtel', 'eastcom', 'pantech', 'dopod', 'philips', 'haier', 'konka', 'kejian', 'lenovo', 'benq', 'mot', 'soutec', 'nokia', 'sagem', 'sgh', 'sed', 'capitel', 'panasonic', 'sonyericsson', 'sharp', 'amoi', 'panda', 'zte'); $pad_list = array('pad', 'gt-p1000'); $useragent = strtolower($_SERVER['HTTP_USER_AGENT']); if(dstrpos($useragent, $pad_list)) { return false; } if(($v = dstrpos($useragent, $mobilebrowser_list, true))){ $_G['mobile'] = $v; return '1'; } if(($v = dstrpos($useragent, $touchbrowser_list, true))){ $_G['mobile'] = $v; return '2'; } if(($v = dstrpos($useragent, $wmlbrowser_list))) { $_G['mobile'] = $v; return '3'; //wml版 } $brower = array('mozilla', 'chrome', 'safari', 'opera', 'm3gate', 'winwap', 'openwave', 'myop'); if(dstrpos($useragent, $brower)) return false; $_G['mobile'] = 'unknown'; //对于未知类型的浏览器,通过$_GET['mobile']参数来决定是否是手机浏览器 if(isset($_G['mobiletpl'][$_GET['mobile']])) { return true; } else { return false; } } /** * 判断$arr中元素字符串是否有出现在$string中 * @param $string $_SERVER['HTTP_USER_AGENT'] * @param $arr 各中浏览器$_SERVER['HTTP_USER_AGENT']中必定会包含的字符串 * @param $returnvalue 返回浏览器名称还是返回布尔值,true为返回浏览器名称,false为返回布尔值【默认】 * @author discuz3x * @lastmodify 2014-04-09 */ function dstrpos($string, $arr, $returnvalue = false) { if(empty($string)) return false; foreach((array)$arr as $v) { if(strpos($string, $v) !== false) { $return = $returnvalue ? $v : true; return $return; } } return false; } 方法二

     <?php function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset ($_SERVER['HTTP_VIA'])) { // 找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } // 脑残法,判断手机发送的客户端标志,兼容性有待提高 if (isset ($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array ('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile' ); // 从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } // 协议法,因为有可能不准确,放到最后判断 if (isset ($_SERVER['HTTP_ACCEPT'])) { // 如果只支持wml并且不支持html那一定是移动设备 // 如果支持wml和html但是wml在html之前则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; } ?> JavaScript

    if (navigator['userAgent']['match'](/(iPhone|iPod|Android|ios|Nokia|Black Berry|MIDP|Phone)/i)) { //是手机浏览器 } else{ //是电脑浏览器 }

热门文章 HTTP协议原理结构分析

时间:2016-8-15 作者:RainFly   分类: Linux嵌入式   热度: 5039°  评论:1  
时间:2016-8-15   分类: Linux嵌入式    热度:5039   评论:1

1.协议特点 

 a.C/S模式

 b.客户端向服务器发出Request 只需传送请求方法和路径, 通信速度快

方法: GET 通过请求URI得到资源 浏览器向服务器一般请求 POST,用于添加新的内容 发送form表单 PUT 用于修改某个内容 DELETE, 删除某个内容 CONNECT, 用于代理进行传输,如使用SSL OPTIONS 询问可以执行哪些方法 PATCH, 部分文档更改 PROPFIND 查看属性 PROPPATCH 设置属性 MKCOL 创建集合(文件夹) COPY 拷贝 MOVE 移动 LOCK 加锁 UNLOCK 解锁 TRACE 用于远程诊断服务器 HEAD 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据

c. 传输类型很灵活:只需要给它加上Content-Type  MIME类型值即可

d.发送完请求报文,立即和服务器断开连接(PS:虽然TCP的80端口可以建立多个Socket连接但是如果连接过多服务器响应其他请求放慢),服务器所需要完成的是将端口接受请求放入等待队列,根据算法进行选择相应的连接请求进行处理。 节省了客户端进行等待的时间

e.发送完数据包之后,如果服务器不Response,需要将所有的数据包重新发送。

 2.文件格式

                 Request: 请求报文格式

                

            请求报文可以用Google浏览器进行查看其发送 

发送的报文实例

POST报文头如下: POST /sn/index.php HTTP/1.1 Accept: */* Accept-Language: zh-cn host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 12 Connection:close sn=123&n=asa 在http头后边有一空行,空行后边接着发送post数据,长度通过Content-Length: 12 指出,此post数据中包含两项 sn=123 n=asa 其中:Content-Type: application/x-www-form-urlencoded 指定POST数据的编码类型 Content-Length: 12 POST数据的长度

GET: GET报问头如下: GET /sn/index.php?sn=123&n=asa HTTP/1.1 Accept: */* Accept-Language: zh-cn host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 12 Connection:close

 

                   Response :响应报文格式

                

相应阶段报文,给一个API 调试工具 使用GET请求获得数据 http://apistore.baidu.com/astore/toolshttpproxy

我给http:www.baidu.com服务器发送了一个GET请求下面是相应回复的报文 

Response Header HTTP/1.1 200 OK Date: Tue, 16 Aug 2016 01:58:22 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive Vary: Accept-Encoding Set-Cookie: BAIDUID=E6BADB45ADCAFAF36BAE6C63E46613C9:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: BIDUPSID=E6BADB45ADCAFAF36BAE6C63E46613C9; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: PSTM=1471312702; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: BDSVRTM=0; path=/ Set-Cookie: BD_HOME=0; path=/ Set-Cookie: H_PS_PSSID=1465_18241_17949_18560_17001_11693_20848_20856_20837_20771_20719; path=/; domain=.baidu.com P3P: CP=" OTI DSP COR IVA OUR IND COM " Cache-Control: private Cxy_all: baidu+955142e509dca9cdda759e1be73fb859 Expires: Tue, 16 Aug 2016 01:57:59 GMT X-Powered-By: HPHP Server: BWS/1.1 X-UA-Compatible: IE=Edge,chrome=1 BDPAGETYPE: 1 BDQID: 0xc83e2bbf001302cc BDUSERID: 0 Content-Encoding: gzip

 这里可以看到对应上面图二的结果

版本信息:HTTP/1.1   

HTTP 1.1中的五类状态码:  

100-199 用于指定客户端应相应的某些动作。   

200-299 用于表示请求成功。   

300-399  用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。   

400-499 用于指出客户端的错误。  

 500-599 用于支持服务器错误。 

OK:就是OK

剩余的都是头部行,携带了一些关于发送时间 格式 编码之类的信息

Content-Encoding: gzip  此处是指服务器将Response文件进行GZIP压缩, 当客户端接收后根据Content-Encoding: gzip执行解压缩 (这种方法会降低服务器宽带压力,但是增加了服务器压力,加快网页打开速度)

对文件部分解码的到了Response Body, 就是HTML信息。

在HTTP协议是建立在TCP/IP传输控制协议基础上的,所以所有的文件必须是客户端和服务器TCP三次握手已经建立连接,后面我还会继续了解剖学习 , 还会用C语言实现 HTTP FTP等应用层协议!

热门文章 分享CSS常用图标库

时间:2016-8-12 作者:RainFly   分类: Web程序设计   热度: 14175°  评论:4  
时间:2016-8-12   分类: Web程序设计    热度:14175   评论:4

    图标在web前端设计和app开发中作为可视化一个重要元素,部分网站为了使图片性质标志很难自适应,而且重复项目重复量多,现在提供两个常用的纯CSS图标库,只需要引用一样样式文本,就可以在任意轻松使用

1.Font Awesome一个支持可缩放的矢量图标

  官网详情:http://fontawesome.dashgame.com/

  该字库含有585个图标基本上都能满足需要。

  head 部位加上应用css样式路径,

<link href="//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">

   Font Awesome是为使用内联元素而设计的。我们通常更喜欢使用 <i> ,因为它更简洁。 但实际上使用 <span>

所以在需要插入的图标的地方加上 

<i class="fa fa-camera-retro"></i> fa-camera-retro

  使用i标签很简洁明了。由于是文本类型的图标,所以修改了容器文字样式图标也会随之变化的。所以修改图标样式你可以直接用容器来修改,也可以使用官网提供的一些class来,调整大小颜色阴影。需要可以去看看。

2.icono

官网详情:http://saeedalipoor.github.io/icono/ 

同上面的图标使用方法一样,仅仅只需要一个标签就可以实现纯css3的图标

使用方法:

 head嵌入

    

<link rel="stylesheet" href="icono.min.css">

需要使用的地方直接插入标签即可

<i class="icono-mail"></i> <div class="icono-mail"></div> <span class="icono-mail"></span> <whatever class="icono-mail"></whatever>

热门文章 网盘分享密码破解器

时间:2016-8-11 作者:RainFly   分类: 软件分享   热度: 39913°  评论:258  
时间:2016-8-11   分类: 软件分享    热度:39913   评论:258

 网上有部分资源提供了链接但是分享码没有,或者通过某些渠道的找到了分享链接,但是苦于没有分享秘密,而无法获取资源,近期在为此问题上,做了一番寻找,提供了一个暴力破解四位分享码的程序。占没有测试先拿出来

对应网盘分享的Url地址,设置好跑字典频率,就开始耐心等待完成吧!

此处内容已隐藏

热门文章 QQ号码获取昵称头像信息API (EmlogQQ评论)

时间:2016-8-9 作者:RainFly   分类: Web程序设计   热度: 24740°  评论:126  
时间:2016-8-9   分类: Web程序设计    热度:24740   评论:126

    之前有部分可以不用QQ互联就可以通过QQ号码输入相关信息,后来这个API挂了,研究了一下怎么直接获取QQ昵称头像,百度找了很多,在百度API里面还有一个昵称获取的方式,可是不顶用,最后还是被我发现啦。还是和以前的一样。

http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=QQ (这个API已经挂了)

返回值没有资料信息,现在又发现一个http://www.rainfly.cn/getqq.php?id=QQ号    输入相应QQ基本上都获取的到

getqq.php 接口贴在下面,需要的拿去研究弄吧~

头像的就更为简单了有人解析了,我懒得搞直接拿来用

http://q2.qlogo.cn/headimg_dl?bs=12345&dst_uin=12345&src_uin=12345&fid=12345&spec=100&url_enc=0&referer=bu_interface&term_type=PC

把文中的12345全部换成QQ就可以了,代码贴出来,自己用js实现一下评论功能就可以了, 不会的F12。

此处内容已隐藏

热门文章 彻底删除会声会影x5 x6 x7 x9方法+删除工具

时间:2016-8-2 作者:RainFly   分类: 软件分享   热度: 72976°  评论:481  
时间:2016-8-2   分类: 软件分享    热度:72976   评论:481

一系统删除方法

经常有使用会声会影的朋友在软件出问题的时候,都会选择重装软件,但是在重新安装的过程中,

往往会出现“安装向导未完成:您的系统已被修改。要在其他时间完成此安装,请再次运行此设置。单击完成退出向导。”的提示。 出现这种情况的原因是:卸载不彻底,再次安装产生冲突。下面就介绍一下怎么在不使用工具软件的情况下将原软件清理干净,实现二次安装。

1、按照正规的的方法卸载程序,这是保证卸载彻底第一步。不要找到安装文件夹后直接删除。就是将你的安装目录全部删除,若是遇到无法删除的就右击选择粉碎文件,这个功能win10版本貌似只有360自带了

2、清理注册表:—按【Windows+R】进入运行框 —输入regedit进入注册表文件 —在注册表的HKEY_CURRENT_USER中找到software,然后找到相应的软件注册信息(corel)。直接右键,然后删掉 corel 。

二、手动删除方法

1. 到控制面板-->添加与删除程序-->卸载Ulead VideoStudio X5(x6)以及SmartSound Quicktracks Plugin

删除文件夹 C:\Program Files\Ulead Systems\Ulead VideoStudio X5(x6)(若是没有请跳过) 打开隐藏文件夹,在我的电脑->工具->文件夹选项->查看 里,选取"显示所有文件夹" 请进入 我的电脑,在C: 按鼠标右键,选择 "属性",接著执行"磁盘清理"。 删除下列文件夹 C:\Documents and Settings*电脑使用者名称文件夹 \Application Data\Ulead Systems\Ulead VideoStudio(若是没有请跳过) C:\Documents and Settings\All Users\Application Data\Ulead Systems\Ulead VideoStudio (若是没有请跳过) C:\Documents and Settings\All Users\Application Data\SmartSound Software Inc (若是没有请跳过) C:\Documents and Settings*电脑使用者名称文件夹 \My Documents\Ulead VideoStudio (若是没有请跳过) C:\SmartSound Software C:\Program Files\Common Files\Ulead Systems\ (电脑无安装其他友立产品时才可执行,否则请略过) 删除隐藏目录 "{F99F 9E24-EE 2F -47FD-AEB0-FDB82859B 5C 9}" , 在 C:\Program Files\InstallShield Installation Information (若是没有请跳过) 点选开始->执行,打入Regedit,按ENTER (1) 删除目录{F99F 9E24-EE 2F -47FD-AEB0-FDB82859B 5C 9} 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstal\ (2) 在"HKEY_LOCAL_MACHINE\SOFTWARE\Ulead Systems\Ulead VideoStudio" 删除目录"X5(x6)" (3) 在"HKEY_CURRENT_USER\Software\Ulead Systems\Ulead VideoStudio" 删除目录"X5(x6)"

8. 再重新安装一次会声会影 X5(x6 x9)

当然以上方法较为复杂这需要提供给大家一部分官方卸载工具来便捷卸载其注册表残留文件

此处内容已隐藏

热门文章 Linux局域网工具wpa_supplicant 与 wireless tools 区别

时间:2016-8-2 作者:RainFly   分类: Linux嵌入式   热度: 8611°  评论:2  
时间:2016-8-2   分类: Linux嵌入式    热度:8611   评论:2

    前段时间已经给imx283移植过RTL8192EU的无线网卡,使用了wireless tool工具 http://www.rainfly.cn/?post=185

这个命令行工具很强大基本满足很多种wlan硬件驱动,可惜不能连接上那些只支持WPA和AP的信号上面,(当然2.4G的这种路由器已经灭绝了)。

关于wireless tool的编译及用法,在上一个帖子已经说得很清楚了,今天主要研究一下 wap_supplicant工具

一、编译wpa_supplicant http://hostap.epitest.fi/wpa_supplicant/  下载wpa_supplication http://www.openssl.org/source/   下载openssl 1.把补丁拷贝到openssl cp wpa_supplicant-0.7.3/patches/openssl-0.9.8i-tls-extensions.patch openssl-1.0.1c/ 2.修改openssl Makefile

CC= arm-none-linux-gnueabi-gcc AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r RANLIB= arm-none-linux-gnueabi-ranlib

3.make  && make install 4.进入wpa_supplicant目录

#cp defconfig .config #vim .config CC= arm-linux-gcc -L/usr/local/ssl/lib/ CFLAGS += -I/usr/local/ssl/include/ LIBS += -L/usr/local/ssl/lib/ #make

编译后将产生的wpa_supplicant和wpa_cli拷贝到开发板根文件系统的sbin目录下(/sbin);没有sbin目录就放在bin下面,查看tab键能否补齐工具,基本安装完成。 二.wpa_supplicant用法:

在根文件系统/etc(此路径为开发板路径)下添加wpa_supplicant配置文件wpa_supplicant.conf 

其中wpa_supplicant.config 可参考内容如下:

ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network= { proto=RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP ssid="IDEASK" #连接的ap psk="12345678" #wifi密码 }

wpa_supplicant -D wext -c ./wpa_supplicant.conf -i wlan0 -B

热门文章 如何利用JavaScript动态更换body的属性

时间:2016-7-30 作者:RainFly   分类: Web程序设计   热度: 12582°  评论:2  
时间:2016-7-30   分类: Web程序设计    热度:12582   评论:2

    由于自己不是专业学网页设计的所有不是很懂JavaScript和css,以下代码纯属瞎研究,搞了好几次都没成功也不知道是什么原因,估计是写语法有问题。

body标签的属性值获取方法通过getElementsByName("body")   返回拥有指定标签名的所有子元素的集合。

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body style="font-size:12px;padding-left:8px;color:#fff"> <script language="javascript"> window.onload = function(){ var wndObj=document.getElementsByTagName("body"); alert(wndObj[0].getAttribute("style")); } </script> </body> </html>

按照上面的方法我测试了一下,

function chufa(){ document.getElementsByTagName("body")[0].setAttribute("style","background-size:cover;"); document.getElementsByTagName("body")[0].setAttribute("style","background-attachment:fixed;"); document.getElementsByTagName('body')[0].style.background="url(http://7xij7o.com1.z0.glb.clouddn.com/background2.jpg) rgba(194, 240, 194, 1) no-repeat"; }

但是结果是这样的js运行不了,不知道原因是什么,所有就继续研究了一下(下面这种方法是可以实现的)

function select_jpg1(){ document.getElementsByTagName("body")[0].setAttribute("style","background:url(http://7xij7o.com1.z0.glb.clouddn.com/background1.jpg) rgba(194, 240, 194, 1) no-repeat;background-size:cover;background-attachment:fixed;"); }

所有根据标签获得body的值需要通过一个setattribute函数来进行设置和修改,如果通过.style.background=xxx;多次是无效的。

继而可以通过触发相应函数来动态修改标签的属性。

热门文章 CSS实现网页图片背景加仿玻璃模糊

时间:2016-7-22 作者:RainFly   分类: Web程序设计   热度: 11840°  评论:6  
时间:2016-7-22   分类: Web程序设计    热度:11840   评论:6

1.先将body 其后添加背景图片

body{color: #333333;background-image:url("背景图片地址"); background-attachment:fixed; background-repeat:no-repeat; //整张铺满不重复 background-size:100% 100%; }

2.实现清晰度修改,背景玻璃模糊化

在 id="wrap" 的div样式层下面加上 一个样式  

在footer.php中 找到</div><!--end #wrap-->   在前面加上标签 <div class="bg-fixed" ></div>

css:  添加在main.css最后面

.bg-fixed{ width:100%; height:100%; position:fixed; top:0; left:0; z-index:-1; background:url(/content/templates/bowen-em/images/bg-fixed.png)repeat; }

bg-fixed.png图片若需要可以直接用迅雷工具下载

热门文章 触发click事件弹出一个新的的DIV层

时间:2016-7-21 作者:RainFly   分类: Web程序设计   热度: 9469°  评论:1  
时间:2016-7-21   分类: Web程序设计    热度:9469   评论:1

利用一个button,实现关于click触发新的弹出样式层(其实实际上就是将style="display:none;或者display:block;" )

当然需用用到js函数function showDivFun()  和function closeDivFun()  直接通过herf方式触发!

<html lang="UTF-8">

<head>

<meta charset="UTF-8">

<title>div 弹出层触发click事件弹出</title>

<style type="text/css">

.body {height:100%; margin:0px; font-size:12px;}

.mydiv { line-height:20px; border: 1px solid #0080FF; font-size: 12px; z-index:999; width: 500px; height: 220px; left:72%; top:20%; margin-left:-150px!important;/FF IE7 该值为本身宽的一半 / margin-top:-60px!important;/FF IE7 该值为本身高的一半/ margin-top:0px; position:fixed!important;/ FF IE7/ position:absolute;/IE6/ }

</style>

</head>

<body>

<div id="popDiv" class="mydiv" style="display:none;">  //弹出框层 <div onclick="closeDivFun()"> <span>×</span>  //弹出层关闭按钮 </div> div弹出窗口信息!<br/>可以在此添加自定义内容<br/> <a href="javascript:closeDivFun()">关闭窗口</a> </div> <a href="javascript:showDivFun()">点击这里弹出层</a> <script> //弹出调用的方法 function showDivFun(){     document.getElementById('popDiv').style.display='block'; } //关闭事件 function closeDivFun(){     document.getElementById('popDiv').style.display='none'; }   </script>  </body> </html>

返回顶部    首页    捐赠支持    手气不错    友情链接    关于我们    站长工具    站长介绍    手机版本    后台登陆   
版权所有:雨夜轩    站长:RainFly    特别鸣谢   文章归档   皖ICP备15003600号-1   百度统计
Copyright©2015雨夜轩 Powered by emlog强力驱动 七牛CDN全球加速 360站长联盟安全认证 中国博客联盟荣誉成员 可信赖网站 谷歌地图   百度地图   
页面加载耗时:0.082秒 数据库查询次数:58次
背景设置
$