提交 72a2d09b 编写于 作者: 李少辉@开放原子's avatar 李少辉@开放原子 🎧

First commit

Signed-off-by: 李少辉@开放原子's avatarlish <lish@csdn.net>
上级
.idea/
node_modules
assets
build
dist
## 启动
### 1.系统环境依赖
```
1.安装node.js 运行环境
2.配置NPM淘宝资源镜像
```
```
//命令行设置淘宝镜像
npm config set registry https://registry.npm.taobao.org
```
### 2.编译发布
```
//安装或更新npm插件包
npm install
//本地开发: 不压缩,并开启实时watch,输出到本地 访问地址:http://localhost.csdn.net/
输出目录:/dist
npm run dev
//线上环境(压缩),打包
输出目录:/dist
npm run build
```
### 3.增加职位信息
```
只需要改一个json文件 ://目录文件src/js/job_description.json
格式:
'id':必须设置为唯一的,统一类型的职位以'-'和数字拼接,如'bianji-1','bianji-2'以此类推
'imgName':列表图片显示的内容,可相同,
'title':列表及详情页职位名称,可相同,
'duty':岗位职责,不加序号,
'requirement':任职要求,不加序号,
'pluse':加分项,不加序号,
'material':你需要提供的材料
{
"id": "yunying-3",
"imgName": "运营",
"title": "CTO俱乐部运营",
"duty": [
"负责俱乐部整体运营策略与计划、流程规范的制定与执行;",
"管理俱乐部项目及任务分工,把控项目运营节奏、品质,包括线上运营、线下活动;"
],
"requirement": [
"本科毕业,熟悉互联网社区工作及产业,3年以上高端人群社群运营经验者优先;",
"具备一定的活动策划、协调及组织能力;热爱社交、更热爱组织社交活动;"
],
"pluse": [],
"material": []
}
```
\ No newline at end of file
var gulp = require('gulp'),
htmlmin = require("gulp-htmlmin"), //压缩html
cleanCss = require("gulp-clean-css"), //压缩css
imagemin = require("gulp-imagemin"), //压缩图片
connect = require("gulp-connect"),
cached = require("gulp-cached"),
uglify = require('gulp-uglify'), //压缩js
fileInclude = require('gulp-file-include'),
autoprefixer = require('gulp-autoprefixer'), //兼容浏览器前缀
del = require('del')
rev = require('gulp-rev-append')//给页面的引用添加版本号,清除页面引用缓存
gulp.task('webserver', function () {
connect.server({
root: 'dist',
host: '127.0.0.1', //
port: 80
});
});
gulp.task('js', function () {
return gulp.src('src/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
});
gulp.task('css', function () {
return gulp.src("src/css/*.css")
.pipe(autoprefixer())
.pipe(cleanCss({
compatibility: 'ie8'
}))
.pipe(gulp.dest('dist/css'))
});
gulp.task('zip', function () {
return gulp.src("src/static/*.zip")
.pipe(gulp.dest('dist/static'))
});
gulp.task('image', function () {
return gulp.src('src/img/*.{jpg,png,gif,svg}') //要处理的图片目录为img目录下的所有的.jpg .png .gif 格式的图片;
.pipe(cached(imagemin()))
.pipe(gulp.dest('dist/img'))
});
gulp.task('fileinclude', function () {
return gulp.src(['src/*/*.json', 'src/*.html'])
.pipe(fileInclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(rev())
.pipe(htmlmin({
collapseWhitespace: true,
removeComments: true
}))
.pipe(gulp.dest('dist'));
});
gulp.task('testFile', function(){
return gulp.src(['src/test/**/*.*'])
.pipe(gulp.dest('dist/test'));
})
gulp.task('watch', function () {
gulp.watch('src/css/*.css', ['css', 'fileinclude']);
gulp.watch(['src/js/*.*'], ['fileinclude', 'js']);
gulp.watch('src/img/*.*', ['image', 'fileinclude']);
gulp.watch(['src/**.html'], ['fileinclude']);
gulp.watch(['src/**.zip'], ['zip']);
gulp.watch(['src/test/*'], ['testFile']);
})
gulp.task('clean', function () {
return del('dist');
});
gulp.task('default', ['clean'], function () {
gulp.start('fileinclude', 'css', 'image', 'js', 'webserver', 'watch','zip', 'testFile');
});
gulp.task('prod', ['clean'], function () {
gulp.start('fileinclude', 'css', 'image', 'js','zip', 'testFile');
})
{
"name": "www_company_fe",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "gulp",
"build": "gulp prod"
},
"author": "",
"license": "ISC",
"devDependencies": {
"del": "^3.0.0",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^5.0.0",
"gulp-cached": "^1.1.1",
"gulp-clean-css": "^3.9.4",
"gulp-connect": "^5.5.0",
"gulp-file-include": "^2.0.1",
"gulp-htmlmin": "^4.0.0",
"gulp-imagemin": "^4.1.0",
"gulp-rev-append": "^0.1.8",
"gulp-uglify": "^3.0.0"
}
}
RXFSae6GALiCVL2w
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#about"; </script>
</head>
<body>
</body>
</html>
body,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
li,
ol,
dl,
dt,
dd,
p,
span,
object,
iframe,
pre,
a,
abbr,
cite,
input,
select,
option {
margin: 0;
padding: 0;
font-family: 'Arial', 'Microsoft YaHei';
}
ul,
li,
ol,
dl,
dd,
dt,
form {
list-style: none;
margin: 0;
padding: 0;
}
html{
height:100%;
}
body {
background: #fff;
font-family: 'Arial', 'Microsoft YaHei';
font: inherit;
}
img {
border: none;
outline: none;
}
em,
i {
font-style: normal;
}
a {
outline: none;
text-decoration: none;
color: #333;
}
a:hover,
a:active,
avisited {
text-decoration: none;
}
.clearfix:after {
content: '.';
height: 0;
visibility: hidden;
display: block;
clear: both;
}
dd,
dt,
dl {
line-height: 1.2;
font-weight: normal;
}
label {
font-weight: normal;
}
.wap_app_wrap{
margin-top:52px;
background:url(../images/bg.png) no-repeat center ;
background-size:cover;
height:calc(100% - 52px);
position:relative;
}
.wap_app_logo{
padding:3rem 0 0;
text-align:center;
}
.wap_app_logo .logo{
display:inline-block;
width:3.5rem;
height:3.5rem;
margin: 0 auto;
}
.wap_app_pro{
text-align:center;
padding:1.8rem 0;
font-family: PingFangSC-Medium;
font-size: 0.9rem;
color: #3D3D3D;
letter-spacing: 0.5rem;
}
.wap_app_b{
padding:0 0.8rem;
}
.wap_app_b .wap_app_btn{
display:block;
width:100%;
height:1.5rem;
background: #CC2525;
border-radius: 6px;
font-size:0.6rem;
color:#fff;
line-height:1.5rem;
text-align:center;
}
.wap_mobile{
display:block;
width:8rem;
height:7.9rem;
position: absolute;
bottom:0;
left:50%;
margin-left:-4rem;
}
\ No newline at end of file
<html>
<head>
<meta content="always" name="referrer">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="yes">
<script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<link rel="apple-touch-icon" href="//csdnimg.cn/public/favicon.ico"/>
<link rel="stylesheet" href="//csdnimg.cn/public/common/libs/bootstrap/css/bootstrap.css">
<link rel="stylesheet" href="//csdnimg.cn/public/common/toolbar/content_toolbar_css/m_toolbar-1.1.1.css">
<link rel="stylesheet" href="./css/wap_app_download.css">
</head>
<script>
window.csdn = window.csdn || {};
window.csdn.mobileToolbar = window.csdn.mobileToolbar || {};
window.csdn.mobileToolbar.mobileParams = {
prodTag: 'csdn'// 展示对应log,存在第一优先
}
</script>
<body>
<div class="wap_app_wrap">
<div class="wap_app_logo">
<img class="logo" src="images/logo.png" alt="logo"/>
</div>
<div class="wap_app_pro">技 术 连 接 你 我</div>
<div class="wap_app_b">
<a class="wap_app_btn" href="https://t.csdnimg.cn/cISz">立即下载</a>
</div>
<div class="wap_app_bb">
<img class="wap_mobile" src="images/mobile.png" alt="img"/>
</div>
</div>
<script type="text/javascript" src="js/fontSize.js?"></script>
<script type="text/javascript" id="m-toolbar-tpl-scriptId" prod="csdn" src="//csdnimg.cn/public/common/toolbar/js/m_toolbar-1.1.1.js"></script>
</body>
</html>
$(function () {
initpage();
$(window).resize(function ()
{
initpage();
});
function initpage()
{
var view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
var _html = document.getElementsByTagName('html')[0];
view_width > 640 ? _html.style.fontSize = 640 / 16 + 'px' : _html.style.fontSize = view_width / 16 + 'px';
}
});
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="keywords" content="程序员必备 APP,IT资讯 APP,IT学习 APP,编程技术 APP">
<meta name="description" content="CSDN APP主要提供安卓、iOS下载路径, APP主要里面主要内容包括:程序员必备 APP, IT资讯 APP, IT学习 APP,编程技术 APP等内容,找编程技术、程序员资讯等APP内容,就上 CSDN APP。">
<link rel="stylesheet" href="//csdnimg.cn/public/common/toolbar/content_toolbar_css/content_toolbar.css">
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<title>【CSDN APP】博客 APP_下载 APP - CSDN</title>
<style>
html, body{
height: 100%;
}
body{
background: url(img/background.png) top center;
background-size: cover;
}
html, body, div, dl, dt, dd,p{
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
.app-container{
height: 90%;
background:url(img/bg.png) center center repeat-x;
background-size: contain;
margin-top: 1px;
}
.app-wrapper{
width: 1228px;
margin: 0 auto;
padding: 103px 0 0 210px;
box-sizing: border-box;
overflow: hidden;
}
.app-wrapper dt img{
width: 390px;
}
.app-wrapper dt{
float: left;
}
.app-wrapper dd h2{
font-size: 44px;
color: #3D3D3D;
letter-spacing: 1.4px;
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
margin: 0;
}
.app-wrapper dd h4{
font-weight: 300;
font-size: 34px;
color: #3D3D3D;
letter-spacing: 1.9px;
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
margin: 0;
}
.app-wrapper dd{
float: left;
padding-left: 62px;
padding-top: 88px;
}
.app-wrapper .csdn-qr{
margin:47px 0 0;
padding: 0;
}
.app-wrapper li{
list-style: none;
display: inline-block;
margin-right: 30px;
}
.app-wrapper .csdn-qr li span{
display: inline-block;
box-shadow: 0 1px 2px 0 rgba(80,101,152,0.30);
border-radius: 4px;
background: #fff;
padding: 11px;
width: 130px;
height: 130px;
box-sizing: border-box;
}
.app-wrapper .csdn-qr li img{
width: 100%;
}
.app-wrapper p{
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
font-size: 16px;
color: #3D3D3D;
margin-top: 11px;
text-align: center;
}
</style>
</head>
<body>
<div class="app-container" >
<dl class="app-wrapper">
<dt><img src="img/iPhone.png" alt=""></dt>
<dd>
<h2>技术连接你我</h2>
<h4>尽在CSDN APP</h4>
<ul class="csdn-qr">
<li>
<span><img src="img/csdnqr@2x.png" alt="CSDN"></span>
<p>CSDN</p>
</li>
<li>
<span><img src="img/EDUAPPQR@2x.png" alt="CSDN学院"></span>
<p>CSDN学院</p>
</li>
</ul>
</dd>
</dl>
</div>
<div id="csdn_pub_footer" class="margin_foot_top">
</div>
</body>
<script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js"></script>
<script id="toolbar-tpl-scriptId" prod="download" skin="black" src="//csdnimg.cn/public/common/toolbar/js/content_toolbar.js" type="text/javascript" domain="http://blog.csdn.net"></script>
<script src="//csdnimg.cn/pubfooter/js/publib_footer-1.0.2.js"></script>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<meta name="referrer" content="always">
<title>CSDN</title>
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/app_detail_article-0211c45f3f.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/swan_detail-137672cb9a.css">
<script src="https://csdnimg.cn/release/phoenix/static_blog/scripts/swan_detail_icon.js"></script>
<style>
.MathJax_Preview{
display: none !important;
}
#share{
cursor: pointer;
}
.recommend-list li h3 a{
cursor: pointer;
}
.applink{
cursor:pointer;
}
</style>
<script>
var articleTitle = "Webview加载界面白屏解决方法总结";
var articleDesc = "总结android中webview加载出现界面白屏,需要杀掉进程重新加载的情况的解决方法。"
var username = "qq_34584049";
var fileName = "78280815";
var totalFloor = 2;
var miniprogram_recommend_host = "https://gw.csdn.net/mini-app";
var commentpage = 1;
//h5定义rem
initpage();
window.onresize = initpage;
function initpage(){
var view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
var _html = document.getElementsByTagName('html')[0];
window.fontSize = view_width>750?750/7.5:view_width/7.5;
_html.style.fontSize= window.fontSize+'px';
}
</script>
</head>
<body class="">
<div class="bg-white">
<h1 class="article_title">Webview加载界面白屏解决方法总结</h1>
<div class="user-info-box">
<div class="img-box" data-swanlink="userinfo" data-username="qq_34584049">
<img class="avatar" src="https://avatar.csdn.net/B/9/1/3_qq_34584049.jpg" alt="">
</div>
<div class="info-box">
<h3 class="user-name"><a data-swanlink="userinfo" data-username="qq_34584049">mikey未雨绸缪</a></h3>
<p class="create-time">2017-10-19 09:56:55</p>
</div>
</div>
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
<div class="article_content ">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/wapedit_views_html-b772bd2329.css" />
<div id="content_views" class="htmledit_views ">
<p align="center"><span style="font-family:'宋体';"><strong><span style="font-size:24px;">webview<span style="font-family:'宋体';">嵌套</span><span style="font-family:Calibri;">HTML5</span><span style="font-family:'宋体';">界面白屏问题</span></span></strong></span></p>
<p align="left"><span style="font-size:18px;"></span><span style="font-size:18px;"></span><span style="font-size:12px;"></span><span style="font-size:24px;"></span><br /></p>
<p align="left"><span style="font-size:14px;"><strong>问题介绍</strong>:在Android开发中,经常会遇到开发原生和H5嵌套的APP,而在android中加载H5界面时通常使用webview控件进行嵌套,而此时就会出现一些很神奇的事情——<span style="font-size:18px;">界面白屏。</span></span></p>
<p align="left"><span style="font-size:14px;">如果遇到这种情况,那就只能退出程序,干掉进程,然后重新进入app,重新加载界面,目前还没有找到其他的解决方法。</span></p>
<p align="left"><span style="font-size:14px;">经过多方面的研究,请教大神,总结了以下几点来减小这种白屏情况出现的概率。</span></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><span style="font-size:14px;"><strong>解决方案</strong></span></p>
<p align="left"><span style="font-size:14px;">1.Android中加载网页时界面会有缓存,通过清除webview的缓存,让app每次进入该H5界面时都重新加载:</span></p>
<span style="font-size:14px;"></span>
<p align="left"></p>
<pre><code class="language-java">// 清缓存和记录,缓存引起的白屏
mWebView.clearCache(true);
mWebView.clearHistory();
mWebView.requestFocus();
WebSettings webSettings = mWebView.getSettings();
webSettings.setDatabaseEnabled(true);
// 缓存白屏
String appCachePath = getApplicationContext().getCacheDir()
.getAbsolutePath() + "/webcache";
// 设置 Application Caches 缓存目录
webSettings.setAppCachePath(appCachePath);
webSettings.setDatabasePath(appCachePath);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">2.可以通过setAppCacheEnabled方法来控制webview是否有缓存:</span></p>
<p align="left"></p>
<pre><code class="language-java">// 应用可以有缓存 true false 没有缓存
webSettings.setAppCacheEnabled(false);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">3.webview加载H5界面时,H5中的一些控件标签可能使用后android中不支持,可以使用setDomStorageEnabled方法来处理:</span></p>
<p align="left"></p>
<pre><code class="language-java">// 解决对某些标签的不支持出现白屏
webSettings.setDomStorageEnabled(true);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">4.在不同android版本上出现白屏的情况:</span></p>
<div align="left"><pre><code class="language-java">mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不另跳浏览器
// 在2.3上面不加这句话,可以加载出页面,在4.0上面必须要加入,不然出现白屏
if (url.startsWith("http://") || url.startsWith("https://")) {
view.loadUrl(url);
mWebView.stopLoading();
return true;
}
return false;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});</code></pre></div>
<div align="left"><br /><span style="font-size:14px;">5.Webview的控件布局时设置:</span></div>
<div align="left"><pre><code class="language-html"> &lt;WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software"
android:scrollbars="none" /&gt;</code></pre></div>
<div align="left"><br /><span style="font-size:14px;">6.通过android系统的加速器来配置:主要在androidmanifest.xml中设置。</span></div>
<div align="left"><span style="font-size:14px;"><br /></span></div>
<div align="left"><span style="font-size:14px;">//开启硬件加速 app支持硬件加速:</span><br /></div>
<div align="left"><span style="font-size:14px;">application下:&lt; application android:hardwareAccelerated="true" ...&gt; </span></div>
<div align="left"><span style="font-size:14px;"></span><pre><code class="language-html"> &lt;application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name" &gt;
</code></pre></div>
<div align="left"><span style="font-size:14px;"><br /></span></div>
<div align="left"><span style="font-size:14px;">在使用webview的界面中关闭硬件加速:</span><br /></div>
<div align="left"><span style="font-size:14px;">activity界面注册时:&lt;activity android:hardwareAccelerated="false" ..&gt;</span></div>
<div align="left"><span style="font-size:14px;"></span><pre><code class="language-html"> &lt;activity
android:name="com.project.activity.MainActivity"
android:hardwareAccelerated="false" /&gt;</code></pre><br /></div>
<div align="left"><br /></div>
<div align="left"><span style="font-size:14px;"><strong>总结</strong>:webview白屏是一件很神奇的事情,目前我还没有找到最优的解决办法,只能通过这些方面来减小白屏情况出现的概率,以后还得继续研究。</span></div>
<div align="left"><span style="font-size:14px;"> <span style="font-size:18px;">学无止尽!!! </span></span></div>
<div align="left"><span style="font-size:14px;"></span><span style="font-size:14px;"></span><span style="font-size:18px;"></span><br /></div>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><br /></p>
</div>
<script src="https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var observer = lozad('.article_content img', {
rootMargin: '10px 0px', // syntax similar to that of CSS Margin
threshold: 0.1 // ratio of element convergence
});
observer.observe();
if($('div.markdown_views pre.prettyprint code.hljs').length > 0 ){
$('div.markdown_views')[0].className = 'markdown_views ';
}
dp.SyntaxHighlighter.HighlightAll('pre');
});
</script>
<!-- <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f1a9c33fcd.css" /> -->
<link rel="stylesheet" href="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/chart.css" />
<script type="text/javascript" src="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/lib/chart.min.js"></script>
<script type="text/javascript" src="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/widget2chart.js"></script>
<link rel="stylesheet" href="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/codesnippet/lib/highlight/styles/atom-one-light.css">
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/pc_wap_common-98040b5dc6.js"></script>
<script type="text/javascript">
$(function(){
var allEscRegex = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,
namedEntities = {
lt: '<',
gt: '>',
amp: '&',
quot: '"',
nbsp: '\u00a0',
shy: '\u00ad'
}
var allEscDecode = function( match, code ) {
return namedEntities[ code ];
};
htmlDecodeAttr = function( text ) {
return text.replace( allEscRegex, allEscDecode );
}
hljs.initHighlightingOnLoad();
hljs.initCopyButtonOnLoad();
hljs.initLineNumbersOnLoad();
if($('pre .language-plain').length>0){
$('pre .language-plain').each(function(i,e){
var highlightRe = hljs.highlightAuto(htmlDecodeAttr(e.innerHTML))
e.innerHTML = highlightRe.value;
e.className = 'language-'+highlightRe.language;
});
}
})
</script>
<script type="text/javascript">
$(function () {
$(".MathJax").remove();
dp.SyntaxHighlighter.HighlightAll('pre');
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: { automatic: true, width: "94%container" },
imageFont: null
},
tex2jax: {
preview: "none"
},
mml2jax: {
preview: 'none'
},
messageStyle: "none"
});
</script>
<script type="text/javascript" src="https://csdnimg.cn/release/blog_mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/app_blog_article-24440deba9.js"></script> </div>
<div class="copyright-box">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-CSDN_Cert"></use>
</svg>
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34584049/article/details/78280815 </div>
<div id="operation-box">
<div id="share" class="applink">
<svg t="1548751420166" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7725" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M340.522667 415.872l257.770666-144a128 128 0 1 1 38.336 76.373333l-254.464 142.144c2.133333 12.650667 2.368 25.536 0.725334 38.272l294.016 149.461334a128.064 128.064 0 0 1 219.157333 89.898666c0 70.677333-57.344 128.042667-128.042667 128.042667a128.064 128.064 0 0 1-127.402666-140.672l-296.426667-150.677333a128.021333 128.021333 0 1 1-3.669333-188.842667z" fill="" p-id="7726"></path></svg>
<span>分享</span>
</div>
</div>
</div>
<div class="recommend-box bg-white section-box">
<h3 class="box-title">相关推荐</h3>
<div class="box-content">
<ul class="recommend-list">
<li>
<h3><a data-swanlink="blogdetail" data-username="lee4755026" data-articleid="52161035">webview加载网页出现白屏</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="lee4755026">
<img class="avatar" src="https://avatar.csdn.net/F/B/5/1_lee4755026.jpg" alt="">
<span class="name">无谓生活</span>
</div>
<p class="read ml8">阅读 7083</p>
<p class="date ml8">08-09</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="qq_33785670" data-articleid="75103632">处理方案:webview 闪白屏问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="qq_33785670">
<img class="avatar" src="https://avatar.csdn.net/3/5/4/1_qq_33785670.jpg" alt="">
<span class="name">Mubai公子</span>
</div>
<p class="read ml8">阅读 3222</p>
<p class="date ml8">07-14</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="liuwg1226" data-articleid="53929514">解决webview加载网页出现白屏的问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="liuwg1226">
<img class="avatar" src="https://avatar.csdn.net/E/5/F/1_liuwg1226.jpg" alt="">
<span class="name">到达彼岸</span>
</div>
<p class="read ml8">阅读 3007</p>
<p class="date ml8">12-29</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="android_freshman" data-articleid="79461671">WebView 加载https 白屏以及重定向加载</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="android_freshman">
<img class="avatar" src="https://avatar.csdn.net/8/C/4/1_android_freshman.jpg" alt="">
<span class="name">android_小路</span>
</div>
<p class="read ml8">阅读 2215</p>
<p class="date ml8">03-06</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="u011704663" data-articleid="51247882">WebView白屏问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="u011704663">
<img class="avatar" src="https://avatar.csdn.net/0/8/8/1_u011704663.jpg" alt="">
<span class="name">天人不合一</span>
</div>
<p class="read ml8">阅读 2069</p>
<p class="date ml8">04-26</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="yang_yang1994" data-articleid="77159614">WebView加载页面出现白屏</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="yang_yang1994">
<img class="avatar" src="https://avatar.csdn.net/4/0/4/1_yang_yang1994.jpg" alt="">
<span class="name">子静静</span>
</div>
<p class="read ml8">阅读 1051</p>
<p class="date ml8">08-14</p>
</div>
</li>
</ul>
</div>
</div>
<div class="conment-box section-box bg-white">
<h3 class="box-title">评论</h3>
<div class="box-content">
<!-- 评论 -->
<div id="comment" class="">
</div>
</div>
</div>
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/swan_comment-8fc5351a91.js"></script>
<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.1.js"></script>
<script>
var swanlinkDOM = $('[data-swanlink]');
var tapcallback = function(e){
e.preventDefault();
var type = $(this).data("swanlink");
switch(type){
case "userinfo":
var username = $(this).data("username");
if(username !== ""){
swan.webView.navigateTo({
url: '/pages/user/index?userName=' + username
});
}
break;
case "blogdetail":
var username = $(this).data("username");
var articleId = $(this).data("articleid");
if(username !== "" && articleId !== ""){
swan.webView.navigateTo({
url: '/pages/blog/article-detail?userName=' + username + '&articleId=' + articleId
});
}
break;
default:
break;
}
}
// 用户个人中心跳转
$(function(){
$(document).on('click','[data-swanlink]',tapcallback)
$('#content_views').find('a').not("[href^='#']").removeAttr('href');
});
</script>
<script type="text/javascript">
$(function(){
// 图片预览
var urls = [];
$('#content_views img').map(function(){
urls.push($(this).data('src'))
})
$(document).on('click','#content_views img',function(){
var this_src = $(this).data('src');
swan.previewImage({
current: this_src, // 当前显示图片的http链接
urls: urls, // 需要预览的图片http链接列表
fail: function (err) {
console.log('错误码:' + err.errCode);
console.log('错误信息:' + err.errMsg);
}
});
})
// 分享按钮
$(document).on('click','#share',function(){
swan.openShare({
title: articleTitle,
content: articleDesc,
path: 'pages/blog/article-detail?userName=qq_34584049&articleId=78280815',
appKey : 'obyjgY148KrH0rrRwn9OgySgEhwHgBzK',
imageUrl : 'https://g.csdnimg.cn/static/logo/logo-200.jpg'
});
})
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#contact"; </script>
</head>
<body>
</body>
</html>
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
.edu-ad-list .recommend-item-box{
padding: 0!important;
background: #FFFFFF;
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box .blog_title {
vertical-align: bottom;
padding-left: 4px;
}
\ No newline at end of file
.edu-ad-list .recommend-item-box{
padding: 0!important;
background: #FFFFFF;
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box .blog_title {
vertical-align: bottom;
padding-left: 4px;
}
\ No newline at end of file
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
.edu-ad-list .recommend-item-box{
padding: 17px 24px;
background: #FFFFFF;
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.05);
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box a .blog_title {
vertical-align: bottom;
color: #3399ea;
}
\ No newline at end of file
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
\ No newline at end of file
/* --------------------------------
Primary style
-------------------------------- */
*, *:after, *:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
font-size: 100%;
font-family: "Roboto", sans-serif;
color: #4d4d4d;
background-color: white;
}
body, html {
/* important */
height: 100%;
}
a {
color: #4d4d4d;
text-decoration: none;
}
/* --------------------------------
Modules - reusable parts of our design
-------------------------------- */
.cd-container {
/* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */
width:90%;
max-width: 900px;
/* margin: 0 auto; */
margin: 0 auto;
font-size: 15px;
}
.cd-container::after {
/* clearfix */
content: '';
display: table;
clear: both;
}
.cd-container h2,.cd-container h3{
max-height: 50px;
font-size: 1.5em;
border-bottom: 1px #ccc solid;
display: inline-block;
width: 100%;
margin: 1em 0 0 0;
}
.cd-container h3{
border:none;
font-size: 1.2em;
}
.cd-container ul{
margin: 1em auto 0;
}
/* 企业数字 */
.csdn-digitalinfo{
float: left;
margin: 24px 0;
width: 50%;
text-align: center;
padding: 0 24px;
min-height: 80px;
}
.csdn-digitalinfo .title{
font-size: 18px;
line-height: 24px;
}
.csdn-digitalinfo .content{
font-size: 14px;
line-height: 22px;
min-height: 70px;
}
/* 新媒体矩阵 */
.newmedia{
float: left;
width:95px;
margin: 0 5px 0 0;
text-align: center;
height: 142px;
}
.newmedia .content{
line-height:20px;
}
.newmedia .QR{
background: #fff;
}
.newmedia img{
width: 95px;
height: 95px;
}
@media only screen and (min-width: 768px) {
.csdn-digitalinfo{
width: 20%;
padding: 0 8px;
min-height: 45px;
}
.csdn-digitalinfo .title{
font-size: 24px;
line-height: 30px;
}
.csdn-digitalinfo .content{
font-size: 14px;
line-height: 24px;
}
}
/* .cd-container a{
font-weight: 400;
} */
.cd-container a:hover{
color: #FC5531;
}
h1, h2, h3 {
font-weight: 400 !important;
}
/* --------------------------------
Main components
-------------------------------- */
.cd-header {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
z-index: 2;
}
.cd-header:after {
content: "";
display: table;
clear: both;
}
.cd-header #cd-logo {
float: left;
margin: 16px 0 0 20px;
}
.cd-header #cd-logo img {
display: block;
width: 84px;
height: 20px;
}
.csdnchart{
width: 100%;
/* text-align: center; */
margin:24px 0 0 0;
background-repeat: no-repeat;
background-size: 100%;
}
.CSDN-chart01{
background-image: url(../img/meeting@2x.png);
background-position: center 80%;
}
.CSDN-chart01 span{
font-size: 12px;
text-align: center;
width: 100%;
margin: 30% 0 0 0;
display: inline-block;
}
@media only screen and (min-width: 375px) {
.CSDN-chart01 span{
margin: 24% 0 0 0;
}
.medias .newmedia{
width: 45% !important;
height:192px;
}
}
@media only screen and (min-width: 768px) {
.cd-header {
height: 60px;
}
.cd-header #cd-logo {
margin: 20px 0 0 0px;
}
.CSDN-chart01 span{
margin: 18% 0 0 0;
}
}
.cd-main-nav {
float: right;
width: 44px;
margin-right: 18px;
height: 100%;
background: url("../img/cd-icon-menu.svg") no-repeat center center;
background-size: 44px 44px;
cursor: pointer;
}
.cd-main-nav ul {
position: absolute;
top: 0;
left: 0;
width: 100%;
-webkit-transform: translateY(-100%);
-moz-transform: translateY(-100%);
-ms-transform: translateY(-100%);
-o-transform: translateY(-100%);
transform: translateY(-100%);
}
.cd-main-nav ul.is-visible {
-webkit-transform: translateY(50px);
-moz-transform: translateY(50px);
-ms-transform: translateY(50px);
-o-transform: translateY(50px);
transform: translateY(50px);
}
.cd-main-nav a {
display: block;
height: 50px;
line-height: 50px;
padding-left: 5%;
background: #2f292a;
border-top: 1px solid #453c3d;
color: #8e7d7f;
}
@media only screen and (min-width: 768px) {
.cd-main-nav {
width: auto;
height: auto;
background: none;
cursor: auto;
}
.cd-main-nav ul {
position: static;
width: auto;
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
line-height: 60px;
}
.cd-main-nav ul.is-visible {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
}
.cd-main-nav li {
display: inline-block;
/* margin-left: 0.1em; */
}
.cd-main-nav a {
display: inline-block;
height: auto;
line-height: normal;
background: transparent;
padding: .3em 0.7em;
border-top: none;
color: #4d4d4d;
text-transform: uppercase;
/* font-size: 14px; */
font-size: 0.875rem;
}
.no-touch .cd-main-nav a:hover {
color: #1C1D30;
font-weight: 500;
}
}
.cd-main-content {
/* you need to assign a min-height to the main content so that the children can inherit it*/
height: 100%;
position: relative;
z-index: 1;
}
/* 这里定义图片上的文字样式 */
.picinfo {
position: absolute;
left: 50%;
bottom: 40px;
right: auto;
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-ms-transform: translateX(-50%);
-o-transform: translateX(-50%);
transform: translateX(-50%);
width: 90%;
max-width: 900px;
font-size: 30px;
font-size: 1.875rem;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
color: white;
}
/* 图片文字简介 */
.picinfo span {
display: inline-block;
line-height: 24px;
padding:10px 0 0 0;
margin: 10px 0 0 0;
font-size: 16px;
border-top: 0.5px #ccc solid;
}
.cd-fixed-bg{
position: relative;
min-height: 100%;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
.cd-footer-bg{
position: relative;
height: 500px;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
/* .cd-fixed-bg h1, .cd-fixed-bg h2 {
position: absolute;
left: 10%;
top: 75%;
bottom: auto;
right: auto;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
width: 90%;
max-width: 1170px;
text-align: center;
font-size: 30px;
font-size: 1.875rem;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
color: white;
} */
.cd-fixed-bg.cd-bg-1 {
background-image: url("../img/cd-background-1-new.jpg");
}
.cd-fixed-bg.cd-bg-2 {
background-image: url("../img/cd-background-2.jpg");
}
.cd-fixed-bg.cd-bg-3 {
background-image: url("../img/cd-background-3.jpg");
}
.cd-fixed-bg.cd-bg-4 {
background-image: url("../img/cd-background-4.jpg");
}
.cd-fixed-bg.cd-bg-5 {
background-image: url("../img/cd-background-5.jpg");
}
.cd-fixed-bg.cd-bg-6 {
background-image: url("../img/cd-background-6.jpg");
}
.cd-footer-bg.cd-bg-7 {
background-image: url("../img/cd-background-7.jpg");
}
@media only screen and (min-width: 768px) {
.cd-fixed-bg h1, .cd-fixed-bg h2 {
font-size: 36px;
}
.recruit li{
width: 20%!important;
}
.newmedia{
width: 15% !important;
}
.recruit{
justify-content: flex-start!important;
}
}
@media only screen and (min-width: 1170px) {
.cd-fixed-bg {
background-attachment: fixed;
background-attachment: scroll\9;
}
.cd-fixed-bg h1, .cd-fixed-bg h2 {
font-size: 48px;
font-weight: 300;
}
}
.cd-scrolling-bg {
position: relative;
/* min-height: 100%; */
padding: 1em 0;
line-height: 1.6;
/*box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);*/
z-index: 2;
}
.cd-scrolling-bg.cd-color-1 {
color: #4D4D4D;
}
.cd-scrolling-bg.cd-color-2 {
background-color: #fff;
color: #4d4d4d;
}
.cd-scrolling-bg.cd-color-3 {
color: #3d3536;
}
@media only screen and (min-width: 768px) {
.cd-scrolling-bg {
padding: 1em 0;
font-size: 20px;
font-size: 1.25rem;
line-height: 2;
font-weight: 300;
}
}
.recruit{
width: 90%;
margin-left: 20px;
}
.recruit-index{width: auto;}
.recruit li{
text-align: center;
margin: 25px 0 0;
height: 185px;
float: left;
width: 50%;
}
.recruit a{
display: block;
width: 120px;
height: 120px;
border-radius: 100%;
background: #0E5791;
font-family: Arial-Black;
font-size: 26px;
color: #FFFFFF;
text-align: center;
line-height: 120px;
margin: 0 auto;
}
/*.recruit a:hover{
color: #fff;
text-decoration: underline;
}
.recruit a[attr^="bianji"]{
background:#B966FF;
}
.recruit a[attr^="suanfa"]{
background:#ED8400;
}
.recruit a[attr^="yunying"]{
background:#4283CE ;
}
.recruit a[attr^="shichang"]{
background:#81C9D0 ;
}
.recruit a[attr^="jizhe"]{
background:#DF6DBC ;
}
.recruit a[attr^="qudao"]{
background:#60BD8F ;
}
.recruit a[attr^="xiangmu"]{
background:#D9A666 ;
}
.recruit a[attr^="guwen"]{
background:#B2BF64 ;
}
.recruit a[attr^="qianduan"]{
background:#D1C080 ;
}
.recruit a[attr^="jiaohu"]{
background:#4D862C ;
}*/
.job-n{
max-width: 120px;
margin: 5px auto 0;
text-align: center;
}
.newmedias{
width: 90%;
max-width: 800px;
overflow:hidden;
margin: 2em auto 0;
}
.programmer p{
margin-top: 1em;
}
.online-application{
width:158px;
height:24px;
border-radius:2px;
border:1px solid rgba(224,224,224,1);
font-size:14px;
color:rgba(51,153,234,1);
line-height:20px;
padding: 2px 8px;
margin-left: 10px;
}
.chart-1{
display: block;
width: 100%;
max-width: 800px;
margin: 2em auto 0;
}
/*job*/
.job-title{
width: 100%;
background:url(../img/php.png) no-repeat center center;
height: 240px;
margin-top: 60px;
background-size: cover;
}
.job-title h2{
font-size: 24px;
color: #FFFFFF;
line-height: 24px;
text-align: center;
padding-top: 70px;
}
.job-recruit{
display: flex;
width: 100%;
margin-left: 0;
flex-wrap: wrap;
}
.job-recruit-hot{width: 100%;height: 406px;overflow: hidden;
margin-left: 0;}
.job-recruit p{
margin-top: 10px;
}
.job-recruit a,.job-recruit-hot a{
margin: 0;
display: inline-block;
background: none;
line-height: inherit;
width: auto;
height: auto;
text-align: left;
font-size: 24px;
color: #2D2D2D;
}
.job-recruit-hot a{font-size: 16px;color: #3D3D3D;line-height: 25px}
.job-recruit a:hover{color: #2D2D2D;text-decoration: none}
.job-contain h2{
font-size: 18px;
color: #2E2E2E;
line-height: 25px;
font-weight: 500;
margin: 0 0 16px;
}
.job-contain .job_name_area{margin: 0;overflow: hidden}
.job-contain .job_name_area img{vertical-align: middle;margin-right: 16px;float: left;width: 48px;height: 48px;border-radius: 4px;border: none; }
.job-contain h2.job-name-dec {float: left;width: calc(100% - 72px);margin-top: 3px; font-size: 24px;color: #2D2D2D;margin-bottom: 6px;}
.job-contain .job_name_area span{display: inline-block;margin-top: 3px;margin-bottom: 30px; color: #6B6B6B;font-size: 12px}
.job-contain h2.gwzz{background: url("../img/icon_gw-new.png") no-repeat left center;padding-left: 27px;background-size: 20px}
.job-contain h2.rzyq{background: url("../img/icon_rz-new.png") no-repeat left center;padding-left: 27px;background-size: 20px}
.job-contain h2.jfx{background: url("../img/icon_jf-new.png") no-repeat left center;padding-left: 27px;background-size: 20px}
.job-contain h2.tgzl{background: url("../img/icon_tg.png") no-repeat left center;padding-left: 27px;background-size: 20px}
.job-contain h2.lxfs{background: url("../img/icon_lx-new.png") no-repeat left center;padding-left: 27px;background-size: 20px}
.jobs_other h2.qtzw{font-size: 18px;color: #2D2D2D;line-height: 25px;font-weight: 500;margin-bottom: 20px}
.job-contain li,.job-contain p{color: #909090;line-height: 30px;font-size: 14px;font-weight: 400;}
.job-recruit li,.job-recruit-hot li{
text-align: left;
width: 100%!important;
float: none;
height: auto;
margin: 0;
}
.job-recruit-hot li{padding-bottom: 16px;margin-bottom: 16px;border-bottom: 1px solid #E0E0E0;}
.job-recruit p.jobs_area_dec,.job-recruit-hot p.jobs_area_dec,.recruit-index p.jobs_area_dec{margin: 3px 0 0;color: #6B6B6B;font-size: 12px}
.job-recruit p.job-d{margin: 18px 0 0;color: #4D4D4D;font-size: 14px;line-height: 25px;display: none}
.job-recruit li,.recruit-index li{padding-bottom: 12px;margin-bottom: 12px;border-bottom: 1px solid #E0E0E0}
.recruit-index li{overflow: hidden}
.job-recruit li img,.recruit-index li img{margin-right: 12px;float: left;width: 48px;height: 48px;}
.jobs_right{float: left;width: calc(100% - 60px);height: auto}
.job-recruit{height: 515px;overflow: hidden;}
.btn_box{text-align: center;margin-top: 32px;}
.btn_box a{display: block; font-size: 24px;color: #1C1D30;line-height: 33px;}
.send-resume{
display: block;
width: 120px;
height: 40px;
background: #FC5531;
border-radius: 20px;
font-size: 14px;
color: #FFFFFF;
text-align: center;
line-height: 40px;
margin: 20px auto 0;
}
.container-nav,.container,.footer-logo{
width:100%;
max-width: 900px;
margin: 0 auto;
overflow: hidden;
height: 100%;
}
.jobs_dec,.jobs_other {background-color: #fff}
.jobs_other{margin-top: 8px;}
.job-describe .container{max-width: 1180px;padding: 15px 20px}
.container-nav{
max-width: 1200px;
}
.footer-img{
display:block;
width: 192px;
margin:23px auto 0;
}
.job-contain ol{
list-style: decimal inside;
padding-bottom: 16px;
margin-bottom: 16px;
border-bottom: 1px solid #E0E0E0;
}
.medias .newmedia{
width: 162px;
height:192px;
}
.medias .newmedia img{
width:100%;
max-width: 162px;
height:100%;
max-height: 155px;
}
.persion_article{
width: 300px;
margin: 0 auto 0;
}
.hot_jobs{display: none}
.hot_jobs h3{margin-bottom: 16px; padding-bottom: 32px;border-bottom: 1px solid #E0E0E0;color:#2E2E2E; ;font-size: 18px;}
@media only screen and (min-width: 768px) {
.medias .newmedia{
width: 22%!important;
}
.persion_article{
float: right;
margin-top: 7px;
margin-right: 20px;
}
.footer-img{
display: inline;
margin:213px 0 0 85px;
}
.job-title h2{font-size: 36px;padding-top: 50px;line-height: 50px}
.job-contain .job_name_area span{margin-bottom: 44px;}
.job-describe .jobs_dec,.job-describe .jobs_other{padding: 40px;background-color: #fff;margin-top: -60px;border-radius:4px;}
.job-describe .jobs_other{margin-top: 16px;}
.job-contain{float: left;width: calc(100% - 308px)}
.hot_jobs{display: block; float: left;width: 250px;margin-left: 58px}
.job-contain ol{ margin-left: 72px; margin-bottom: 32px;padding-bottom: 32px;}
.job-contain li{line-height: 25px;font-size: 16px;}
.job-contain p{margin-left: 72px;line-height: 25px;font-size: 16px;}
/* .job-contain p span{margin-right: 80px}
*/ .job-contain h2.gwzz,.job-contain h2.rzyq,.job-contain h2.jfx,.job-contain h2.tgzl,.job-contain h2.lxfs,.job-contain h2.qtzw{margin-left: 45px;}
.send-resume{margin-left: 72px}
.jobs_other h2.qtzw{margin-bottom: 40px}
.send-resume{font-size: 18px;margin: 32px 0 0px 72px}
.job-recruit p.job-d{display: block}
.job-recruit li img,.job-contain .job_name_area img{width: 56px;height: 56px;margin-right: 16px;}
.jobs_right{width: calc(100% - 72px);padding-bottom: 32px; margin-bottom: 32px; height: auto;
border-bottom: 1px solid #E0E0E0;}
.job-recruit li,.recruit-index li{padding-bottom: 0;margin-bottom: 0;border-bottom: none;}
.recruit-index{overflow: hidden}
.recruit-index li{float: left;width: 33.33%}
.recruit-index li:nth-last-child(1) .jobs_right,.recruit-index li:nth-last-child(2) .jobs_right,.recruit-index li:nth-last-child(3) .jobs_right,.recruit-index li:nth-last-child(4) .jobs_right{border-bottom: none;}
.recruit-index .jobs_right{padding-bottom: 16px;margin-bottom: 16px;}
}
@media only screen and (min-width: 992px) {
.recruit-index li{width: 25%}
}
.layer-img{
float: right;
margin-top: 15px;
}
.layer-p{
font-size: 1.5em;
}
.job-recruit .job-n,.job-recruit-hot .job-n,.recruit-index .job-n{
margin:3px 0 0;
text-align: left;
max-width:inherit;
line-height: 33px;
}
.recruit-index .job-n{line-height: 22px;margin-top: 0}
.job-recruit .job-n{font-size: 18px;font-weight: 600}
.cd-fixed-bg h1, .cd-fixed-bg h2 {
padding-top: 168px;
}
.csdn-pub-footer {
padding: 24px 0 0;
}
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44"><path d="M18 13h20v3H18zm0 7h20v3H18zm0 7h20v3H18z" fill="#3D3536"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200px" height="50px" viewBox="0 0 200 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo200x50</title>
<defs>
<polygon id="path-1" points="0.630611424 -0.00393316719 40.5131953 -0.00393316719 40.5131953 44.6752728 0.630611424 44.6752728"></polygon>
</defs>
<g id="logo200x50" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组" transform="translate(16.000000, 2.000000)">
<path d="M35.9592202,33.9533775 C35.5155589,33.531742 34.9082779,33.2988985 34.3214494,33.3114846 C33.7188882,33.3209242 33.1729645,33.5726469 32.7859409,34.0147349 C29.3137409,37.9872337 23.2645298,38.4167356 20.8243928,38.4167356 C16.2965308,38.4167356 12.8321971,37.2682508 10.5273612,35.0074663 C8.33737367,32.859957 7.18888885,29.6945441 7.11337204,25.6024769 C6.93716615,16.1156777 12.3098725,6.30478543 21.60316,6.30478543 C26.0413458,6.30478543 29.4883735,9.45289245 30.7627197,10.805902 C31.206381,11.2763088 31.8183818,11.5469107 32.4476885,11.5500572 C33.0785685,11.5657899 33.6622505,11.2857484 34.0571405,10.8184881 L34.4189919,10.3905595 C35.1615739,9.51739639 35.4951065,8.38779077 35.3613788,7.21256042 C35.2245045,6.02631719 34.6298097,4.94390958 33.6874228,4.16199595 C31.4093324,2.27564896 27.5390959,0.0305971351 22.0326618,0.0305971351 C16.3138367,0.0305971351 10.6642354,2.65952608 6.53283656,7.25031882 C2.19219326,12.0723818 -0.126802117,18.6360512 0.00535230053,25.7330581 C0.110761181,31.4282841 1.97822896,36.214162 5.40952401,39.5793798 C9.0956883,43.1963204 14.4951402,45.1078396 21.0273443,45.1078396 C28.6907272,45.1078396 33.4388466,42.8376155 36.0756419,40.9355359 C37.0966921,40.2008202 37.7055464,39.038176 37.7527444,37.7512437 C37.7967959,36.4580183 37.2681782,35.1915385 36.3006191,34.2758972 L35.9592202,33.9533775 Z" id="Fill-1备份-5" fill="#FC5531"></path>
<path d="M64.4823913,17.8566548 C62.7439314,17.2619599 61.0180576,16.7742472 59.4951353,16.3447453 C53.055754,14.5244755 52.3178918,12.8505196 52.3918354,11.5966259 C52.542869,9.06366622 55.9930432,5.63709097 61.8393029,6.06659283 C66.0776839,6.37809967 68.9347365,9.62060269 70.2610005,11.5242556 C70.6181321,12.0387139 71.1703488,12.3942722 71.7776298,12.5012543 C72.3833375,12.6098098 73.0032047,12.4603494 73.4736115,12.0937782 L73.8921005,11.768112 C74.8628061,11.0082241 75.4307555,9.85344619 75.4543545,8.59325943 C75.4763802,7.32835286 74.944616,6.08704529 73.9959361,5.18556338 C71.7618971,3.0663729 67.9577378,0.451603351 62.5299671,0.0519935646 C58.2333753,-0.265806344 54.0012874,0.881105207 50.6124705,3.27719066 C47.4250318,5.53168209 45.4143968,8.6703495 45.2350443,11.6752892 C44.7898098,19.0869495 52.3289047,21.2171528 57.8337655,22.7731138 C59.3315155,23.1963226 60.8324121,23.6620095 62.4969285,24.1843342 C70.4639519,26.6811087 70.6920756,29.1951891 70.1241263,33.0371069 C69.5483106,36.9246493 65.2580119,38.8660606 58.3529435,38.3547489 C51.1646872,37.824558 48.2085187,34.1824451 47.0867795,32.0569616 C46.7941518,31.5031716 46.2828401,31.0815361 45.6865719,30.8990372 C45.085584,30.7196847 44.4436911,30.7952016 43.9276596,31.1067084 L43.2983528,31.4858657 C42.2521304,32.118319 41.5520266,33.1865672 41.3789672,34.4137154 C41.2043346,35.6440101 41.5724791,36.9152097 42.3890046,37.9063678 C44.7725039,40.8027521 49.4262273,44.3882274 58.0414367,45.0222539 C59.0892324,45.0977707 60.0803906,45.1371024 61.0227774,45.1371024 C73.1369324,45.1355291 76.7758986,39.0265338 77.6364756,33.6789997 C78.2799418,29.6860484 77.485442,26.4954632 75.2026318,23.9231718 C73.1164799,21.5695646 69.7087838,19.6407394 64.4823913,17.8566548" id="Fill-3备份-2" fill="#3E3C39"></path>
<path d="M115.575177,21.1630324 C115.691599,27.5615088 113.894928,32.2262451 110.232363,35.0266601 C104.392396,39.4900183 95.6324461,38.9566808 91.5293661,38.3903047 C91.0652524,38.3258008 90.7238534,37.8962989 90.7663316,37.4353317 L93.5384279,7.75250561 C93.5698932,7.4111067 93.8106031,7.13106519 94.1409891,7.05082858 C101.123147,5.36428649 106.555638,5.87559823 110.290574,8.57217765 C113.496891,10.8895998 115.472915,15.595241 115.575177,21.1630324 M114.857767,3.86181663 L114.857767,3.86181663 C110.677597,0.847437296 105.127112,-0.400163335 98.3699305,0.147333537 C93.3968339,0.551663124 89.4683865,1.84331523 89.0420312,1.98805578 L89.0011262,2.00064192 C87.8321889,2.3955319 87.0345426,3.4118623 86.9228407,4.6515966 L83.6378594,40.9861951 C83.5403169,42.0811888 84.2797523,43.1321311 85.3621599,43.4294785 L86.3312923,43.6937874 C86.3737705,43.7063735 90.8811801,44.8863236 96.8926329,45.0877018 C97.3960783,45.1050077 97.8948039,45.1144473 98.3872364,45.1144473 C105.175883,45.1144473 110.716929,43.5097151 114.875073,40.3380091 C120.214741,36.2648212 122.84367,29.8553319 122.687917,21.2967601 C122.541603,13.3674951 119.907954,7.50235617 114.857767,3.86181663" id="Fill-5备份" fill="#3E3C39"></path>
<g id="编组备份-2" transform="translate(127.167165, 0.232762)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Clip-8"></g>
<path d="M37.2667591,4.81183674 C34.4159995,1.61653171 30.0737829,-0.00393316719 24.3581044,-0.00393316719 C19.2324009,-0.00393316719 14.5739577,1.91702569 10.7572123,5.57959097 L10.8830736,4.22186166 C10.9286983,3.74044199 10.7603588,3.25430253 10.4236797,2.88458481 C10.0854273,2.51644037 9.61344724,2.30719587 9.1257345,2.30719587 L7.74755272,2.30719587 C5.5780177,2.30719587 3.80809247,3.92766075 3.63031331,6.07831657 L0.637959718,42.1674854 C0.586041911,42.7999387 0.811019074,43.438685 1.2562536,43.9185314 C1.70306139,44.3999511 2.32292854,44.6752728 2.96167489,44.6752728 L5.66297411,44.6752728 C6.48893922,44.6752728 7.16701725,44.0601254 7.24253406,43.2451732 L9.24687605,21.755921 C9.34127207,20.75375 9.53478389,19.7861908 9.824265,18.8784159 C11.3408943,14.0909648 15.1922516,6.06101063 23.9223095,6.06101063 C27.8916618,6.06101063 30.805352,7.72552699 32.0938576,9.14933351 C33.8401838,11.0813052 33.6010473,13.8062035 33.5979007,13.8423886 L31.0979797,42.7700466 C31.0570747,43.2514663 31.2254143,43.7344592 31.5636667,44.1010304 C31.901919,44.4660283 32.3723258,44.6752728 32.8553188,44.6752728 L34.9760825,44.6752728 C36.6028405,44.6752728 37.9369708,43.4607108 38.0785648,41.8512588 L40.4667839,14.7202715 C40.4935294,14.4905745 41.0740649,9.08010977 37.2667591,4.81183674" id="Fill-7" fill="#3E3C39" mask="url(#mask-2)"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg class="icon" width="200" height="50" viewBox="0 0 4096 1024" xmlns="http://www.w3.org/2000/svg"><path d="M1081.536 723.584c74.656 27.296 230.368 54.432 356.288 54.432 135.68 0 211.2-37.568 217.248-95.872 5.504-53.184-50.048-60.384-203.264-96.672-211.712-51.904-346.784-132.256-333.536-260.672 15.392-149.088 214.912-261.76 521.056-261.76 149.248 0 293.952 10.528 368.928 35.104l-25.728 188c-48.672-16.928-234.976-40.448-360.992-40.448-127.776 0-193.92 40.192-198.496 84.256-5.76 55.776 60.64 58.368 226.624 102.56 224.768 57.024 323.04 137.312 310.176 261.792-15.072 146.432-194.592 270.944-553.056 270.944-149.216 0-277.824-27.232-348.672-54.464l23.392-187.168zm2106.4-613.792c816.16-153.888 886.592 122.624 861.376 367.296l-47.52 452.64H3742.72l43.36-412.832c9.376-90.912 67.744-268.736-214.048-262.08-97.536 2.368-145.888 15.744-145.888 15.744s-8.48 109.856-18.752 191.04l-49.12 468.128h-254.08l50.432-461.376 33.312-358.56zM2157.088 88.384c58.24-6.336 147.712-12.768 270.848-12.768 205.568 0 371.776 35.776 474.688 111.008 92.416 70.144 153.92 183.712 136.896 348.256-15.712 153.12-95.328 260.32-211.232 326.624-106.048 62.528-239.68 89.248-440.64 89.248-118.496 0-231.52-6.4-317.472-19.136l86.944-843.232zM2326.944 764c19.808 3.84 45.856 7.648 97.216 7.648 205.632 0 350.624-101.056 365.184-243.136 21.152-205.376-107.456-277.184-324.128-275.936-28.064 0-67.072 0-87.712 3.776l-50.592 507.616z" fill="#262626"/><path d="M934.176 936.8c-48.736 16.896-149.696 28.416-290.752 28.416-405.632 0-624.576-190.4-598.688-442.112C75.712 223.2 400.064 54.464 755.2 54.464c137.536 0 218.528 11.072 294.4 29.632l-24.352 202.048c-50.464-16.992-168.736-32.608-264.48-32.608-208.96 0-386.432 62.24-406.784 259.136-18.144 176.064 106.432 260.224 341.504 260.224 81.824 0 202.464-11.712 258.24-28.64L934.176 936.8z" fill="#CA0C16"/></svg>
\ No newline at end of file
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csdnFooter" content='{ "type": "1", "el": "#csdn-pub-footer" }'>
<!-- <link href='http://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'> -->
<link rel="stylesheet" href="css/reset.css?rev=@@hash">
<!-- CSS reset -->
<link href="//csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<link rel="stylesheet" href="css/style.css?rev=@@hash">
<!-- Resource style -->
<script src="js/modernizr.js?rev=@@hash"></script>
<!-- Modernizr -->
<!--[if lt IE 8]>
<script>window.location.href="https://g.csdnimg.cn/browser_upgrade/1.0.2/index.html";</script>
<![endif]-->
<!--[if gte IE 8]>
<script src="https://g.csdnimg.cn/browser_upgrade/1.0.2/browser_upgrade.js"></script>
<![endif]-->
<title>CSDN介绍</title>
</head>
<body>
<header class="cd-header header">
<div class="container-nav">
<div id="cd-logo">
<a href="https://www.csdn.net" target="_blank">
<img src="img/csdn-logo-new.svg" alt="Logo">
</a>
</div>
<nav class="cd-main-nav">
<ul>
<!-- inser more links here -->
<!-- @@loop('nav.html',"js/header.json") -->
</ul>
</nav>
</div>
<!-- cd-main-nav -->
</header>
</div>
<main class="cd-main-content" id="csdn-previewimg-box">
<div class="cd-fixed-bg cd-bg-1">
<div class="picinfo" id="about">
<h1>公司简介</h1>
<span>CSDN使命:成就一亿技术人 <br>
CSDN愿景:成为技术人交流和成长的家园 <br>
中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力于成为IT技术人交流和成长的家园。截至2020年11月,CSDN拥有超过3100万注册会员,Alexa全球网站综合排名第26位,社区技术文章累计超过3600万篇,新媒体公众号粉丝总量2000万,合作上千家科技公司。
</span>
</div>
</div>
<!-- cd-fixed-bg -->
<div class="cd-scrolling-bg cd-color-2">
<div class="cd-container">
<h2>CSDN开发者平台</h2>
<ul>
<li>专业中文IT技术社区:
<a href="https://www.csdn.net/" target="_blank">CSDN.NET</a>
</li>
<li>开发者专属移动 APP:
CSDN APP
</li>
<li>新媒体矩阵微信公众号:CSDN资讯、程序人生、CSDN Code、AI科技大本营、区块链大本营、Python大本营、CSDN云计算、GitChat、人工智能头条、CSDN企业招聘</li>
<li>IT技术培训学习平台:
<a href="https://edu.csdn.net" target="_blank">程序员研修院</a>
</li>
<!--
<li>人工智能新社区:
<a href="http://www.tinymind.cn" target="_blank">TinyMind</a>
</li>
-->
<li>代码托管协作平台:CODE CHINA</li>
<li>IT人力资源服务:科锐福克斯</li>
<li>高校合作平台:CSDN教育</li>
<li>高校IT技术学习成长平台:高校俱乐部</li>
</ul>
<h2>CSDN平台资源</h2>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
3100万
</div>
<div style="color: #4D4D4D;" class="content">
注册会员
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #5A9BEF;" class="title">
750万
</div>
<div style="color: #4D4D4D;" class="content">
月活跃注册用户
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FFBB00;" class="title">
1.5万
</div>
<div style="color: #4D4D4D;" class="content">
日均新增用户
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #A0D75D;" class="title">
30万
</div>
<div style="color: #4D4D4D;" class="content">
CSDN博主
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
高覆盖
</div>
<div style="color: #4D4D4D;" class="content">
涵盖中国90%以上<br/>软件开发者和70%以上IT专业人士
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
高粘性
</div>
<div style="color: #4D4D4D;" class="content">
每月超过30万用户原创文章和48万评论
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #5A9BEF;" class="title">
高流量
</div>
<div style="color: #4D4D4D;" class="content">
日均PV3000万
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FFBB00;" class="title">
高质量内容库
</div>
<div style="color: #4D4D4D;" class="content">
1000万论坛帖、3600万篇博客文章、700万技术资源、200期技术杂志
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #A0D75D;" class="title">
110万
</div>
<div style="color: #4D4D4D;" class="content">
APP月活跃用户
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
高专业度会员
</div>
<div style="color: #4D4D4D;" class="content">
博主30万,CTO俱乐部会员2万
</div>
</div>
<!-- <h2>CSDN新媒体矩阵</h2>
<div class="newmedias">
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-APP.jpg" />
</div>
<div class="content">
CSDN APP
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-ZX.jpg" />
</div>
<div class="content">
CSDN 资讯
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/AI-KJ.jpg" />
</div>
<div class="content">
AI科技大本营
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/GitChat.jpg" />
</div>
<div class="content">
GitChat
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/GitChat-JPK.jpg" />
</div>
<div class="content">
GitChat精品课
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/QKLDBY.jpg" />
</div>
<div class="content">
区块链大本营
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CXRS.jpg" />
</div>
<div class="content">
程序人生
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/RGZNTT.jpg" />
</div>
<div class="content">
人工智能头条
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-YJS.jpg" />
</div>
<div class="content">CSDN云计算</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/ITXY.jpg" />
</div>
<div class="content">
IT学涯
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/Mobilehub.jpg" />
</div>
<div class="content">Mobilehub</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-WLWKF.jpg" />
</div>
<div class="content">CSDN物联网开发</div>
</div>
</div> -->
</div>
</div>
<!-- cd-container -->
</div>
<!-- cd-scrolling-bg -->
<!--<div class="cd-fixed-bg cd-bg-3">-->
<!--<div class="picinfo" id="business">-->
<!--<h2>商务合作</h2>-->
<!--</div>-->
<!--</div>-->
<!-- cd-fixed-bg -->
<div class="cd-scrolling-bg cd-color-1">
<div class="cd-container programmer">
<!--<h2>商业服务</h2>-->
<!--<p>CSDN商业服务,面向国内外IT/互联网科技企业及众多行业合作伙伴,围绕企业品牌建设、技术传播、行业赋能、团队协作、人才培养、人才招聘、资源对接、商机发现等对外需求,提供“知识赋能”、“工具赋能”、“产业赋能”三大类商业服务。</p>-->
<!--<p>在AI技术蓬勃发展的今天,CSDN肩负AI时代的新使命:行业赋能。将驾乘AI技术发展浪潮,与社区伙伴共同成长。借助AI智慧动能,将技术连接业务,实现科技向产业的赋能。</p>-->
<h2><b>知识赋能</b></h2>
<!-- <ul>
<li>CSDN搭建起桥梁,构筑企业技术价值向开发者人群的输出的桥梁。聚焦企业与合作伙伴核心业务。</li>
<li>• 品牌形象:协助技术领先企业塑造权威的技术品牌形象</li>
<li>• 技术布道:将企业的资讯,先进技术、产品和解决方案送达开发者了解认知</li>
<li>• 培训学习:使开发者掌握新技术并为其企业自有研发和产品所用</li>
</ul> -->
<h3>CSDN 技术社区</h3>
<!-- <p>问答:为企业提供定制化的论坛活动策划与整体运营
<br/> 博客:企业博客专栏,优质内容共建,博客观点策划运营
<br/> 知识库:企业级知识图谱,内容共建,社区专家联合运营
<br/> GitChat:知识付费分享社区与学习平台,是中国的IT知识服务商。企业机构入驻,在线达人课,在线极客书,《程序员》杂志专栏、专题
<br/> TinyMind AI社区:专业 AI 云计算平台,一站式 AI 云计算服务,支持主流 AI 框架。AI论文与算法分享,AI模型在线训练。企业定制化AI竞赛活动
</p> -->
<p>CSDN APP:开发者专属移动APP,提供最新技术资讯、开发知识,助力开发者学习和成长,让技术交流更简
单。目前月活跃用户超过110万,已进入苹果商店新闻类APP榜单前十。</p>
<p>CSDN Blog:致力于为开发者打造专业技术写作、分享与交流平台,为技术人提供全面的资讯与知识交流互动。</p>
<p>CSDN技术论坛:全力为IT开发者打造分享技术心得、讨论技术话题的信息平台。</p>
<p>CSDN资源下载中心:为IT专业人士提供丰富全面、专业的技术资料分享、交流与下载服务。</p>
<h3>CSDN新媒体矩阵</h3>
<p>截止2020年11月,CSDN微信公众号矩阵总关注人数超过2000万。</p>
<p>涵盖CSDN资讯、AI科技大本营、区块链大本营、CSDN Code、程序人生、人工智能头条、Python大本营、GitChat等,覆盖各个专业技术领域,为IT开发者和从业人员提供资讯、学习、交流、互动和分享平台。
</p>
<img src="img/csdn-jz5-new-3.png" alt="" width="100%" style="display:block;margin-top:20px;">
<h3>行业研究成果</h3>
<p>《中国开发者调查报告》</p>
<p>自2004年首次发布,每年末定期推出。是中国样本最丰富的开发者调查,持续、全面和深入地反映了中国开发者社
群自身状况、各项技术、工具、产品的使用状况和发展趋势,是完整准确了解中国开发者市场的重要参考资料。</p>
<img src="img/tiaocha-new.jpg" alt="" width="100%" style="display:block;margin-top:10px;">
<p>《中国AI应用开发者报告2020》、《中国人工智能产业路线图》、《AI技术人才成长路线图》</p>
<p>最新技术、产业、人才路线图,定期更新,动态开放</p>
<img src="img/luxian-new-2.jpg" alt="" width="100%" style="display:block;margin-top:10px;">
<p>《CSDN区块链开发者报告》</p>
<p>聚焦区块链技术扫描、公链选择指南与行业应用开发实战</p>
<!-- <h2>专业会议服务</h2>
<p>CSDN拥有10年以上会议组织策划及运营经验。多次主办和承办国家品牌技术大会、顶级技术峰会、小型高端技术沙龙、闭门高端私享会等。通过组织IT技术领袖与行业大咖,技术管理者与实践者参与分享,推动各行业了解互联网技术趋势、把握技术应用方法,共同探讨技术发展未来。</p>
<h2>企业定制化服务</h2>
<p>围绕企业权威观点解读、技术与应用创新、内容生态建设、开发者生态构建、开发者交流互动等特定需求,提供“高端访谈”、“开发大赛”、“专区”、“专题”、“调研”、“小型沙龙活动”等定制化服务。</p>
<h2>媒体资源服务</h2>
<p>作为IT行业资深媒体, CSDN长期运营 主流垂直技术领域的资讯频道,配合280万+精准人群覆盖的新媒体矩阵,以及权威IT技术内容平台《程序员》杂志,帮助客户实现精准内容投放和目标受众覆盖。同时,结合feed流内容推荐机制,及广告资源布局,为客户打造优质的流量-内容匹配通道。</p> -->
<!-- <h3>新媒体矩阵</h3>
<div class="newmedias medias">
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-APP.jpg" />
</div>
<div class="content">
CSDN APP
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CSDN-ZX.jpg" />
</div>
<div class="content">
CSDN 资讯
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/CXRS.jpg" />
</div>
<div class="content">
程序人生
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/GitChat.jpg" />
</div>
<div class="content">
GitChat
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/RGZNTT.jpg" />
</div>
<div class="content">
人工智能头条
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/AI-KJ.jpg" />
</div>
<div class="content">
AI科技大本营
</div>
</div>
<div class="newmedia">
<div class="QR">
<img src="img/QKLDBY.jpg" />
</div>
<div class="content">
区块链大本营
</div>
</div>
<div class="newmedia">
<div class="QR" id="train">
<img src="img/GitChat-JPK.jpg" />
</div>
<div class="content">
GitChat精品课
</div>
</div>
</div> -->
<h3>程序员研修院</h3>
<p>程序员研修院是CSDN旗下的在线学习平台,集合各领域资深技术专家,为开发者提供集学、练、测于一体的优
质内容和服务,为开发者提供丰富而专业的学习选择;同时也通过收益激励方式,让更多内容创作者可持续地
输出自己的知识。</p>
<p>技术公开课</p>
<li>热门领域、名企最佳应用实践技术公开课,与行业顶级大咖面对面</li>
<p>精品视频课</p>
<li>17+技术领域,近万门IT课程,全方位满足开发者学习需求</li>
<p>优质图文专栏</p>
<li>海量技术内容,百门精选技术专栏,为开发者提供深度阅读基地</li>
<p>就业实训营</p>
<li>系统学习,实战演练,助力岗位跃升,实现高薪就业</li>
<h3>CSDN教育</h3>
<p>产教融合</p>
<p>CSDN整合产业资源和行业资源,向高校提供基于双方合作的创新型产业学院、专业共建、校企“双创”学院等服务。深化产教融合,与高校共同合作育人、合作办校、合作就业、合作发展。</p>
<p>共建校企产业“双创”学院</p>
<p>打造校企“双创”学院,加快培养战略性新兴产业急需人才。</p>
<p>人才培养 多重保障</p>
<p>常态化育人体系,研制分层创建课程教学大纲和教学内容。提供多学科、多方向、多模式综合解决方案。</p>
<p>“好师父”产品</p>
<p>“好师父”是针对大学生人群,以OMO模式进行任务式强化训练,企业技术经理带领学员,师徒制实施项目交付,培养高素质技术人才。</p>
<img src="img/tubiao.jpg" alt="" width="600" style="display: block; margin: 20px auto 0;">
<!-- <h3>高校俱乐部</h3>
<p>高校IT技术学习成长平台</p>
<p>CSDN高校俱乐部是由中国专业的IT社区CSDN发起,由全国各高校在校生代表自发加入的IT技术学习型组织。CSDN由此搭建起行业与校园之间的桥梁,为各俱乐部提供IT行业资讯、技术学习、专家交流、技术竞赛、实习就业等服务</p>
<li>2000+IT技术导师</li>
<li>500+合作高校</li>
<li>1000+IT领域企业及合作伙伴</li> -->
<!-- <li>• 注册会员20000余名</li> -->
<!-- <h3>行业研究成果</h3>
<p>《中国人工智能产业路线图》、《AI技术人才成长路线图》</p>
<li>最新技术和产业路线图,时时维护,随时更新,动态开放。</li>
<img src="img/luxian-new.jpg" alt="" width="100%" style="display:block;margin-top:10px;">
<p>《CSDN区块链开发者报告》</p>
<li>聚焦区块链技术扫描、公链选择指南与行业应用开发实战</li>
<img src="img/kfzbg.jpg" alt="" width="100%" style="display:block;margin-top:10px;">
<p>《中国开发者调查报告》</p>
<li>自2004年首次发布,每年末定期推出。是中国样本最丰富的开发者调查,持续、全面和深入地反映了中国开发者社
群自身状况、各项技术、工具、产品的使用状况和发展趋势,是完整准确了解中国开发者市场的重要参考资料。</li>
<img src="img/tiaocha-new.jpg" alt="" width="100%" style="display:block;margin-top:10px;"> -->
<h3>2020年CSDN全年会议</h3>
<p>CSDN十余年来举办各类顶级技术峰会和中小型高端技术沙龙。每年举办的顶级技术大会包括:中国人工智能大会、中国大数据技术大会、中国软件开发者大会、区块链开发者大会等,技术会议领袖大咖云集,是每年度了解互联网技术趋势、探讨技术应用最新发展的权威会议。</p>
<img src="img/huiyi-new.jpg" alt="" width="100%" style="display:block;margin-top:10px;">
<h2>工具赋能</h2>
<h3>代码托管协作平台——CODE CHINA</h3>
<p>CODE CHINA是CSDN为开发者提供的代码托管平台,开发者和企业可以托管、运营、推广自己的开源项目,也可以
托管自己的私有代码仓库。平台提供完善的源代码管理功能及开源协作功能,包括Issue,WIKI,Pages,代码片,
MR,Star,Fork等社交编程功能。</p>
<p>教育为先</p>
<p>CODE CHINA打造能够在线编译、在线运行的课件即代码的基础环境,使得CODE CHINA能够结合云原生技术为
开源技术的教学、学习提供一站式学习、练习的引擎,通过教学培训场景,赋能高校学生及开发者成为优秀开源项目
的参与者和贡献者,助力更多优秀开源项目的产生、发展及壮大。</p>
<p>立足开源,赋能开发者生态</p>
<p>CODE CHINA通过CSDN社区,为入驻的企业机构及个人开源项目提供推广、运营、经验交流、学练应用等方面的
开源加速包,赋能开发者生态,提升生产力效率。</p>
<h3>AI社区——在线实验平台</h3>
<p>平台定位</p>
<li>为AI爱好者提供一站式从入门到熟练运用到工作中的学习平台</li>
<li>提供拟真实验环境,让学员学习后直接具备在公司真实线上环境完成分配的工作内容能力</li>
<li>全面提升学员基础能力+编码能力+实战能力,一次补齐后续工作中所有短板</li>
<p>平台特色</p>
<li>一站式AI学习平台,提供常用AI数据集、个人云存储、模型训练、结果导出功能
<li>Web Shell全拟真生产环境,真实体验公司线上实际生产流程,学习和实践高度结合</li>
<li>多环境快速切换,搭配高配置GPU,快速学习、实践AI课程</li>
<li>在线答题巩固AI基础能力,在线编程提升代码编写能力</li>
<!--<h3>区块链社区—— 区块链大本营 & CODE Network</h3>
<p>区块链大本营:专业区块链开发者社区,提供业内资讯、深度观点、网络问答等信息服务,并通过系列技术沙龙、Workshop、区块链线上峰会、编程大赛/黑客松、区块链技术培训等线上线下活动,为技术人员、创业者提供整个职业生涯的多维度服务。</p>
<p>CODE Network:面向全球开发者社群的协作平台,开发者、用户和贡献者被通证连接和激励,形成分布式协作组织(DCO)。DCO可在其上完成团队创建、通证发行、融资、销售和权益分配,基于通证的激励机制共同开发软件、创作产品、传播知识,以新的协作组织模式创造新的科技与智慧成果,并获取和公平的分配收益。</p>
-->
<h2>职业赋能</h2>
<h3>人力资源服务: 科锐福克斯</h3>
<P>专注于互联网与高科技领域的猎头公司,提供专业人才、中高级人才的寻聘服务(猎头),帮助企业找到关键人才,实现发展战略。曾被誉为阿里巴巴、美团、滴滴、英特尔、58集团等企业的“年度最佳人才服务合作机构”。</P>
<P>服务领域</P>
<P>紧跟新兴科技领域,涵盖人工智能(AI)、区块链(Blockchain)、增强现实(AR)等。</P>
<P>客户群体</P>
<P id="dsj">每年服务过的互联网与科技公司超过200家,超过1500人的寻聘(猎头)招募,其中包括阿里巴巴、腾讯、高通、英特尔、美团、今日头条、平安科技、平安健康集团等知名企业。</P>
<!--<h2>产业赋能</h2>-->
<!--<h3>ABI基金: AI、区块链、IOT</h3>-->
<!--<P>投资领域:“ A ”— AI(人工智能) ,“ B ”— Blockchain(区块链),“ I ” — IOT(物联网)</P>-->
<!--<P id="dsj">平台定位:聚焦领域、赋能行业、投资生态</P>-->
<!--<P>建立起围绕CSDN技术社区、易观、视觉中国与合作企业资源平滑流动的投资生态系统。</P>-->
<h2>CSDN大事记</h2>
<img src="img/dashiji-new-2.png" alt="" width="100%" style="display:block;margin-top:10px;">
<h2 id="train">我们的合作伙伴</h2>
<p>
<img src="img/huoban-2.jpg" alt="" class="chart-1">
</p>
</div>
<!-- cd-container -->
</div>
<!-- cd-scrolling-bg -->
<div class="cd-fixed-bg cd-bg-4">
<div class="picinfo" id="contact">
<h2>联系方式</h2>
</div>
</div>
<div class="cd-scrolling-bg cd-color-3">
<div class="cd-container programmer">
<p>
<img src="https://www.csdn.net/company/img/rectangle@2x.jpg" alt="" class="chart-1">
</p>
<h2>地址</h2>
<p>北京市朝阳区酒仙桥路10号恒通商务园B8B二层 地址链接:<a href="https://j.map.baidu.com/kgPSP" target="_blank">https://j.map.baidu.com/kgPSP </a>邮编:100015</p>
<h2>公司总机</h2>
<p>010-84770176</p>
<h2 id="advertisement">法务</h2>
<p>Email:legal@csdn.net</p>
<h2>商务合作</h2>
<p>
010-64351458&nbsp;&nbsp;Email:business@csdn.net
<!-- <a href="https://ads.csdn.net" target="_blank" class="online-application">在线广告发布服务申请</a> -->
</p>
<h2>市场合作</h2>
<p>Email:market@csdn.net</p>
<!-- <h2>会议合作</h2>
<p>010-64348410 &nbsp;&nbsp; Email:meeting2020@csdn.net</p> -->
<h2>CSDN客服</h2>
<p>4006600108&nbsp;&nbsp;Email:kefu@csdn.net</p>
</div>
</div>
<div class="cd-fixed-bg cd-bg-5">
<div class="picinfo" id="statement">
<h2>版权说明</h2>
</span>
</div>
</div>
<div class="cd-scrolling-bg cd-color-3">
<div class="cd-container programmer">
<h2>版权与免责声明</h2>
<p>本网站及相应客户端、自媒体平台、其他主运营网站等(以下统称“CSDN”)是中国知名的IT技术社区,面向IT专业技术人员,提供专业化、集成化的服务。本版权与免责声明系为保障CSDN的正常经营、保护用户的合法权益而设定,其初衷是为了向用户提供不间断的优质服务。CSDN一向尊重他人的知识产权,同时也注意保护自己的知识产权,因此建议您在接受CSDN服务之前,请务必仔细阅读本声明。</p>
<p>1、 CSDN经营者(即北京创新乐知网络技术有限公司及其他相关联的公司)要求并依照合理信赖原则相信用户对所有在CSDN传输的文章、文档、音频、视频、图片、课程、软件、源代码等内容(以下统称“作品”)具有所有权、知识产权或已经事先征得原作者同意取得发布、传播作品所需的一切授权,并需注明原作者姓名和作品来源;由于用户不具备完整所有权、知识产权或未获得合法授权而发生的侵权或违法行为,将由用户承担侵权或违法行为的法律责任,CSDN经营者不承担任何法律责任。
</p>
<p>2、 用户通过CSDN社区、博客、下载、移动APP、新媒体矩阵等频道上传及发布的所有作品,均视为用户同意CSDN经营者拥有对其分享作品的商业合作与利用的权利。
</p>
<p>3、 用户上传到CSDN的作品仅代表作者或用户个人的观点和立场,与CSDN无任何关联,因用户行为或用户上传、存储、发布、传播的任何作品、信息、内容等引发的任何争议,或由此产生的任何直接、间接、偶然、特殊的损害,均由用户自行承担法律责任,CSDN经营者不承担任何责任;如用户行为对CSDN造成损失或不良影响,CSDN经营者保留追究相关用户法律责任的权利。
</p>
<p>4、 CSDN无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论CSDN经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。同时,CSDN经营者如认为用户发布的作品涉嫌侵权、违法,或其他用户或第三方就用户发布的作品提出权利主张或异议并提供初步依据,CSDN有权不经通知用户而采取删除内容、断开链接、屏蔽或通知上传用户予以纠正、暂停账户使用等措施,用户不得阻止或拒绝,CSDN不因此向用户承担任何责任,无论司法机关最终是否认定该等作品或内容构成侵权、违法或损害第三方利益。</p>
<p>5、 CSDN的所有权、相关知识产权及运营权均属于CSDN经营者所有,CSDN发表的作品的知识产权及所有权为CSDN或其提供者所有。</p>
<p>6、 凡CSDN上的所有作品,任何媒体、网站、个人或其他主体未经CSDN经营者及作品发布用户(发布用户为作品使用权人的,还须经作品知识产权权利人同意,除非作品知识产权权利人已授权发布用户转授权或转许可第三方使用)书面授权,不得下载、转载、链接、转帖或以其他方式复制、使用,如有需要,请与CSDN经营者联系相关事宜。CSDN经营者保留追究违反上述规定相关主体的法律责任的权利。</p>
<p>7、 用户在进行注册时,CSDN将在您的同意及确认下,通过注册表格等形式要求您提供一些信息资料,以便向您提供更优质的服务;上述用户信息包括但不限于您的姓名或名称、身份证号码、邮箱、联系方式等,CSDN经营者会采取一切合理措施保护用户的信息。
</p>
<p>8、CSDN对为用户提供便利而设置的外部链接的准确性及完整性不做任何保证,对于因上述链接产生的相关责任及纠纷由用户自行承担相关法律责任,CSDN经营者不承担任何法律责任。
</p>
<p>9、用户应自行、独立对其在CSDN知悉的其他用户传输的任何作品、信息、内容等进行独立判断及考虑、衡量其真实性、有效性及相关风险,用户因使用该等作品、信息、内容等所遭受的风险及损失等,由用户与作品、信息、内容的传输者自行处理,CSDN经营者不承担任何责任。其他用户在其发表的作品信息中加入宣传资料或广告信息、人才招聘需求,或以其他方式在CSDN上展示其产品或服务等,用户因该等信息、内容与发布用户产生的法律关系或纠纷,应由其自行解决,CSDN经营者不承担任何责任。
</p>
<p>10、CSDN经营者对用户所发布信息的删除或储存失败不承担任何法律责任。</p>
<p>11、不论在何种情况下,CSDN经营者均不对由于Internet连接故障,电力故障,罢工,劳动争议,暴乱,起义,骚乱,火灾,洪水,风暴,爆炸,不可抗力,战争,政府行为,国际、国内法院的命令,第三方的不作为或任何CSDN经营者不能合理控制的原因而造成的CSDN不能访问、信息及数据的延误、停滞或错误,不能提供或延迟提供服务而承担责任。
</p>
<p>12、不论是否可以预见,不论是源于何种形式的行为或不作为,CSDN经营者不对因任何原因造成的任何特别的、间接的、惩罚性的、突发性的或其他任何损害(包括但不限于利润或其他可得利益的损失)承担责任。除CSDN经营者因故意或重大过失损害用户的利益以外,任何情况下,CSDN经营者向用户承担的赔偿、补偿或其他任何责任的限额将不超过该等用户就相关服务向CSDN经营者支付的服务费用的数额。
</p>
<p>13、基于互联网的开放性属性,用户知悉用户将作品、信息、内容等上传到互联网上,有可能会被其他组织或个人复制、转载、擅改或做其它非法用途,用户必须充分意识到此类风险的存在。用户明确同意使用CSDN过程中所存在的上述风险将完全由用户自行承担,CSDN经营者对此不承担任何责任。</p>
<p>14、CSDN经营者保证提供的功能、服务与相应功能、服务的介绍及CSDN公布的服务承诺相符。除上述保证外,CSDN经营者不对平台及/或功能、服务作出任何其他明示或暗示的保证。</p>
<p>15、用户使用CSDN服务,应遵守法律、法规以及本版权与免责声明的约束,否则CSDN经营者有权依照本版权与免责声明处分或终止用户使用CSDN服务,由此造成的损失CSDN经营者不负任何责任。</p>
<p>16、以任何方式登陆CSDN或直接、间接使用CSDN任何作品的行为,即代表您自愿接受CSDN本项声明的约束。
</p>
<p>17、如果您有任何疑问,请与我们联系,联系方式具体如下:电话:010-84770176; Email:webmaster@csdn.net.
</p>
<p>18、本版权与免责声明的最终解释权归北京创新乐知网络技术有限公司所有。
</p>
</div>
</div>
<!-- cd-scrolling-bg -->
<div class="cd-fixed-bg cd-bg-2">
<div class="picinfo" id="recruit">
<h2>招贤纳士</h2>
</div>
</div>
<!-- cd-fixed-bg -->
<div class="cd-scrolling-bg cd-color-3">
<div class="cd-container">
<ul class="recruit-index" id="recruitment">
@@loop('jobs-index.html',"js/jobs_description_.json")
</ul>
</div>
<!-- cd-container -->
</div>
<div class="cd-fixed-bg cd-bg-6">
<div class="picinfo" id="layer">
<h2>法律顾问</h2>
</span>
</div>
</div>
<div class="cd-scrolling-bg cd-color-3">
<div class="cd-container programmer">
<h2>王杰律师简介</h2>
<img src="https://www.csdn.net/company/img/layer.png" class="layer-img" />
<p class="layer-p">工作经历</p>
<p>北京市中润律师事务所 合伙人、主任律师</p>
<p class="layer-p">教育背景</p>
<p>北京大学法学学士</p>
<h2>社会任职</h2>
<p>北京市律师协会律师代表
<br/> 中国民营科技促进会理事
<br/> 北京市律师协会律师代表
<br/> 北京市朝阳区律师协会理事
<br/> CCTV12《小区大事》栏目专家组律师
<br/> 北京电视台《法治进行时》法律专家评论员
</p>
<h2>所获荣誉</h2>
<p>北京市优秀律师
<br/> 北京市律师协会“公司与公职律师培训讲师”
<br/> 《法制晚报》“首届十大法律点评人”
<br/> 朝阳区政法系统第四期优秀中青年干部培训班“优秀学员”
</p>
<h2>联系方式</h2>
<p>电话:010-6588 1866
<br/> E-mail:wj_4321@163.com
</p>
<h2>业务领域</h2>
<p>公司法律事务、项目投融资、并购及重组、重大疑难民商事争议解决。</p>
<h2>Chrome插件下载</h2>
<p>本地安装:<a href="./static/csdn_0.1.15.zip" target="_blank" title="chrome插件">点击下载</a></p>
<p><a href="https://chrome.google.com/webstore/detail/csdn/ojklpkibpnnjefjcmlkbjcmpmgfcaiao?hl=zh-CN" target="_blank" title="chrome插件">Chrome商店下载</a></p>
</div>
</div>
<!-- <div class="cd-footer-bg cd-bg-7">
<div class="footer-logo">
<img src="https://www.csdn.net/company/img/csdn@2.png" alt="" class="footer-img">
<div class="persion_article">
</div>
</div>
</div> -->
<!-- cd-fixed-bg -->
<!-- 新版footer -->
<div id="csdn-pub-footer" class="csdn-pub-footer"></div>
</main>
<!-- cd-main-content -->
<script src="js/jquery-1.11.0.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<!-- <script src="https://g.csdnimg.cn/sharewx/1.1.3/sharewx.js"></script> -->
<!-- <script src="//csdnimg.cn/pubfooter/js/publib_footer-1.0.3.js"></script> -->
<script src="https://g.csdnimg.cn/common/csdn-footer/csdn-footer.js"></script>
<script src="js/main.js?rev=@@hash"></script>
<!-- <script>
if (window.csdn === undefined) {
window.csdn = {}
}
var shareData = {
appId: 'wx6300eba0bbc2d10b',
title: 'CSDN-专业IT技术社区',
desc: 'CSDN-专业IT技术社区',
link: location.href.split('#')[0],
imgUrl: 'https://g.csdnimg.cn/static/logo/logo-200.jpg',
};
window.csdn.sharewx = function (shareObj){
var url = 'https://wechatapi.csdn.net/api/wechat/share/id/' + shareData.appId
$.ajax({
type: "get",
async: false,
timeout : 5000, //超时时间设置,单位毫秒
url: url, //查询appid之类的的接口,如果不用接口可以直接删掉get请求方法,使用success回调中的方法调用wx 接口也可以,
dataType: "json",
success: function (data) {
if (data.code == 200) {
data = data.data.sign
var configData = {
debug: false,
appId: shareData.appId || data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.nonceStr, // 必填,生成签名的随机串
signature: data.signature, // 必填,签名,见附录1
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage'
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
}
wx.config(configData)
}
},
error: function (xhr, status, error) {
$.get("https://statistic.csdn.net/sharewx?error=wechatapi")
}
})
}
window.csdn.sharewx()
wx.ready(function () {
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
});
wx.error(function (res) {
// alert(res.errMsg);
});
</script> -->
<!-- Resource jQuery -->
<script src="https://g.csdnimg.cn/preview-img/2.0/preview-img.js"></script>
<script>
$(function () {
// 点击招贤纳士的图标 不预览
$('#recruitment li img').on('click', function (e) {
e.stopPropagation();
});
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- <meta name="csdn-share-wx" content='{"title":"CSDN-专业IT技术社区","imgUrl":"https://csdnimg.cn/public/favicon.ico","desc":"描述信息"}'> -->
<link rel="stylesheet" href="css/reset.css?rev=@@hash">
<link href="//csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<!-- CSS reset -->
<link rel="stylesheet" href="css/style.css?rev=@@hash">
<script src="js/modernizr.js?rev=@@hash"></script>
<title></title>
<style>
body{background-color: #F5F6F7}
</style>
</head>
<body>
<header class="cd-header header">
<div class="container-nav">
<div id="cd-logo">
<a href="https://www.csdn.net" target="_blank">
<img src="img/csdn-logo-new.svg" alt="Logo">
</a>
</div>
<nav class="cd-main-nav">
<ul>
<!-- inser more links here -->
<!-- @@loop('nav_job.html',"js/header.json") -->
</ul>
</nav>
</div>
<!-- cd-main-nav -->
</header>
<div class="job-describe">
<div class="job-title">
<div class="container">
<h2 class="job-name"></h2>
</div>
</div>
<div class="container jobs_dec clearfix">
<div class="job-contain">
<div class="job_name_area clearfix">
<img class="job_img" alt="">
<h2 class="job-name-dec"></h2>
<p><span class="job_are"></span> &nbsp; | &nbsp; <span class="job-name"></span></p>
</div>
<h2 class="gwzz">岗位职责</h2>
<ol class="job-duty">
</ol>
<h2 class="rzyq">任职要求</h2>
<ol class="job-require">
</ol>
<!-- <h2 class="jfx">加分项</h2>
<ol class="job-pluse" id="jfx_ol">
</ol> -->
<!--<h2 class="tgzl">你需要提供的材料</h2>-->
<!--<ol class="job-material">-->
<!--</ol>-->
<h2 class="lxfs">联系方式</h2>
<p>*邮件标题注明:应聘<span class="job-name"></span> *邮箱地址:hrzhaopin@csdn.net</p>
<a href="mailto:hrzhaopin@csdn.net" class="send-resume">发送简历</a>
</div>
<!--hot-->
<div class="hot_jobs">
<h3>热门岗位</h3>
<ul class="recruit job-recruit-hot">
@@loop('jobs-right.html',"js/jobs_description_.json")
</ul>
</div>
</div>
<!--other-->
<div class="container jobs_other">
<h2 class="qtzw">其他职位</h2>
<ul class="recruit job-recruit">
@@loop('jobs.html',"js/jobs_description_.json")
</ul>
<p class="btn_box"><a href="javascript:" >查看更多</a></p>
</div>
</div>
</body>
</html>
<script src="js/jquery-1.11.0.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script src="https://g.csdnimg.cn/sharewx/1.1.9/sharewx.js"></script>
<script src="js/main.js?rev=@@hash"></script>
<script>
$(function () {
var search = decodeURI(decodeURI(window.location.search.substr(1)))
$.getJSON("js/jobs_description_.json", function (data) {
var newArr = data.filter(function (s) {
return s.id === search;
});
var title = newArr[0].title
var duty = newArr[0].duty
var requirement = newArr[0].requirement
var pluse = newArr[0].pluse
var material = newArr[0].material
var area = newArr[0].area
var img = newArr[0].img
//var other_duty = newArr[0].other_duty
$(".job-name").text(title)
$(".job-name-dec").text(title)
$(".job_are").text(area)
$(".job_img").attr("src", img);
getJob(duty, 'job-duty')
getJob(material, 'job-material')
getJob(pluse, 'job-pluse')
getJob(requirement, 'job-require')
})
function getJob(arr, id) {
var newArr = '';
for (var i = 0; i <= arr.length - 1; i++) {
newArr += "<li>" + arr[i] + "</li>"
$("." + id).html(newArr)
}
}
})
</script>
<script type="text/javascript">
$('.btn_box a').click(function(){
$('.job-recruit').height('auto');
$(this).hide()
})
if (window.csdn.sharewx.isWeiXin()) {
window.csdn.sharewx.getConfig()
$(document).ready(function(){
var shareImgUrl = ''
if($(".article_content") && $(".article_content").find("img").length > 0 && $(".article_content img").first().data('src')){
shareImgUrl = $(".article_content img").first().data('src')
}
var shareData = {
title : "wepy.js微信小程序报错\'wx\' is not defined no-undef",
desc : "\'wx\'isnotdefined&nbsp;no-undef是eslint报错吧。禁用eslint或者给eslint加上全局变量wx在.eslintrc.js文件中加入以下内容globals:{wx:true},",
link : window.location.href,
imgUrl: shareImgUrl,
}
window.csdn.sharewx.onMenuShare(shareData)
})
}
</script>
\ No newline at end of file
<li>
<img src=@@img alt="">
<div class="jobs_right">
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
</div>
</li>
\ No newline at end of file
<li>
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
</li>
\ No newline at end of file
<li>
<img src=@@img alt="">
<div class="jobs_right">
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
<p class="job-d">@@other_duty</p>
</div>
</li>
\ No newline at end of file
[{
"title": "首页",
"src": "https://www.csdn.net",
"src_job": "https://www.csdn.net",
"target":"_blank"
},
{
"title": "公司简介",
"src": "#about",
"src_job": "index.html#about",
"target":"_self"
},
{
"title": "招贤纳士",
"src": "#recruit",
"src_job": "index.html#recruit",
"target":"_self"
},
{
"title": "商务合作",
"src": "#contact",
"src_job": "index.html#contact",
"target":"_self"
},
{
"title": "广告服务",
"src": "#advertisement",
"src_job": "index.html#advertisement",
"target":"_self"
},
{
"title": "CSDN大事记",
"src": "#dsj",
"src_job": "index.html#dsj",
"target":"_self"
},
{
"title": "合作伙伴",
"src": "#train",
"src_job": "index.html#train",
"target":"_self"
},
{
"title": "联系方式",
"src": "#contact",
"src_job": "index.html#contact",
"target":"_self"
},
{
"title": "版权说明",
"src": "#statement",
"src_job": "index.html#statement",
"target":"_self"
},
{
"title": "法律顾问",
"src": "#layer",
"src_job": "index.html#layer",
"target":"_self"
}
]
\ No newline at end of file
[{
"id": "java-1",
"imgName": "Java",
"title": "高级Java研发工程师",
"duty": [
"根据项目计划配合项目产品经理分解研发任务,组织解决研发过程中存在的技术问题;",
"负责系统概要设计和详细设计,编制系统设计方案,保证系统稳定;",
"与产品、运营等团队紧密配合,确定产品的技术解决方案和开发时间评估;",
"解决研发过程中的关键问题和技术难题;",
"协同组内开发工作以及任务安排。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,5年以上开发经验;",
"良好的Java语言基础,熟悉Spring,SpringBoot,MyBatis等常用框架和类库;",
"熟悉MySQL数据库的使用以及SQL优化,有大规模高并发环境下MySQL优化经验;",
"有企业应用研发,大型商业平台web系统研发经验优先;有高性能、高可用性系统设计、研发、优化经验;",
"熟悉Linux操作系统,掌握常用的Linux命令,熟悉脚本编程shell、Python优先;",
"熟练使用redis、rabbitMQ/zookeeper等;",
"熟悉TCP/IP、http、https等网络协议,熟悉网络安全,了解网络安全策略,对web认证、鉴权和加密有开发经验优先。"
],
"img": "img/job_dev.png",
"other_duty": "根据项目计划配合项目产品经理分解研发任务,组织解决研发过程中存在的技术问题;负责系统概要设计和详细设计,编制系统设计方案,保证系统稳定;与产品、运营等团队紧密配合,确定产品的技术解决方案和开发时间评估;解决研发过程中的关键问题和技术难题;协同组内开发工作以及任务安排。",
"pluse": [],
"material": [],
"area": "长沙"
}, {
"id": "qianduan",
"imgName": "Web",
"title": "高级前端研发工程师",
"duty": [
"负责CSDN-长沙研发中心前端相关项目研发;",
"负责前端系统架构技术选型与建设,持续优化产品质量、性能和用户体验;",
"与产品、设计、测试、开发人员保持良好沟通,保持产品质量和开发进度。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,至少3年以上前端研发工作经验;",
"前端基础知识扎实,熟练掌握原生JavaScript(ES6)、HTML、CSS,熟悉并掌握至少一种MVVM框架,如: Vue、React、Angular,并深入理解其原理;",
"有工程化意识,能够独立搭建 gulp、Webpack 等开发环境,有良好的代码书写习惯,对代码优化有一定理解;",
"负责解决前端开发流程中的各种痛点,带领技术攻关,持续优化。"
],
"img": "img/job_dev.png",
"other_duty": "负责CSDN-长沙研发中心前端相关项目研发;负责前端系统架构技术选型与建设,持续优化产品质量、性能和用户体验;与产品、设计、测试、开发人员保持良好沟通,保持产品质量和开发进度。",
"pluse": [
"熟悉至少一种后端开发语言(NODEJS/JAVA/PHP等);",
"小程序/Chrome插件开发。"
],
"material": [],
"area": "长沙"
}, {
"id": "cekai",
"imgName": "Python",
"title": "测试开发工程师",
"duty": [
"负责接口/ui自动化测试框架开发,自动化测试脚本开发,进行自动化测试和自动化方向相关的质量保障工作;",
"推动解决自动化测试过程中遇到的问题;",
"负责自动化测试ci持续集成,推动自动化测试在研发迭代流程中的落地工作;",
"研究新技术以提供自动化测试的效率和质量,满足质量保障的需求。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,具有3-5年自动化测试相关经验;",
"熟练使用python/java编程语言,熟悉常见的数据库操作;",
"熟悉常见的自动化测试用例设计方法,熟练使用常见的测试工具;",
"熟练使用开源测试框架并对其进行二次开发,如unittest/pytest;",
"熟悉使用接口测试工具,如postman,jemter等;",
"很强的学习能力和技术专研能力,熟悉常见的获取前沿技术的渠道。"
],
"img": "img/job_dev.png",
"other_duty": "负责接口/ui自动化测试框架开发,自动化测试脚本开发,进行自动化测试和自动化方向相关的质量保障工作;推动解决自动化测试过程中遇到的问题;负责自动化测试ci持续集成,推动自动化测试在研发迭代流程中的落地工作;研究新技术以提供自动化测试的效率和质量,满足质量保障的需求。",
"pluse": [],
"material": [],
"area": "长沙"
}, {
"id": "ue",
"imgName": "UE",
"title": "UE设计师",
"duty": [
"负责CSDN 产品的交互设计,并对最终的产品体验和效果负责;",
"参与用户研究及产品需求制定,整理用户目标、任务,持续优化产品用户体验,对现有产品的可用测试和评估,提出改进方案,持续优化产品用户体验;",
"对产品数据变化敏感度高,根据数据提出产品迭代方案,对同类产品进行竞品分析,参与前瞻性设计研究,提供产品交互设计规范,参与团队的专业化建设,提高团队专业水平。"
],
"requirement": [
"统招本科及以上学历,3年以上互联网产品Web、H5、APP端等交互设计工作经验;",
"对交互设计理论知识有较深的了解,掌握Sketch、Ps、Axure等工具,熟悉用户研究、交互设计相关专业知识及技巧,并有相关成功案例;",
"对互联网产品有敏锐的洞察力,对产品整体规划有较深的理解,时刻关注业界最新交互设计理念,有知名互联网团队工作背景者优先;",
"完成产品信息构架,任务流程,交互原型设计,对用户体验研究和流程有系统化理解,有交互设计规范编写经验,有良好的逻辑思维和视觉跟踪经验,产品合作经验,对产品的用户体验负责。"
],
"img": "img/job_ui.png",
"other_duty": "负责CSDN 产品的交互设计,并对最终的产品体验和效果负责;参与用户研究及产品需求制定,整理用户目标、任务,持续优化产品用户体验,对现有产品的可用测试和评估,提出改进方案,持续优化产品用户体验;对产品数据变化敏感度高,根据数据提出产品迭代方案,对同类产品进行竞品分析,参与前瞻性设计研究,提供产品交互设计规范,参与团队的专业化建设,提高团队专业水平。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "ui",
"imgName": "UI",
"title": "UI设计师",
"duty": [
"负责 CSDN 旗下产品UI 设计;",
"负责 CSDN 移动端和网站的 UI 设计和风格定义、优化用户体验;",
"负责 CSDN 视觉审美把控及网站封面设计;",
"与产品经理和开发人员合作,根据产品需求提交开发设计稿;",
"根据产品迭代进行延续性设计,并参与制订产品设计规范。"
],
"requirement": [
"统招本科及以上学历,3-5年经验;",
"充分理解设计流程与规范,至少独立完成过一款已上线产品的UI设计,或写过设计规范;",
"对用户体验敏感,善于用设计语言解决产品问题,追求极致用户体验;",
"熟练掌握sketch等设计软件;",
"具备良好的合作态度和团队精神,关注产品设计趋势,关注互联网动态,具有敏锐的设计嗅觉,创新欲望强烈,富有责任感。"
],
"img": "img/job_ui.png",
"other_duty": "负责 CSDN 旗下产品UI 设计;负责 CSDN 移动端和网站的 UI 设计和风格定义、优化用户体验;负责 CSDN 视觉审美把控及网站封面设计;与产品经理和开发人员合作,根据产品需求提交开发设计稿;根据产品迭代进行延续性设计,并参与制订产品设计规范。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "bianji-1",
"imgName": "编辑",
"title": "高级策划编辑",
"duty": [
"负责软件开发技术杂志与专题图书的策划、编撰及出版工作;",
"策划和撰写热点专刊、专题、原创文章以及其他IT类内容产品;",
"挖掘、联络及维护IT行业技术专家,建立专家资源,共同策划出开发者喜爱的内容作品。"
],
"requirement": [
"统招本科及以上学历,理工科、英语、传媒等相关专业,五年以上纸质出版编辑经验,熟悉期刊或图书的策划出版流程,有计算机专业或编程经验者优先;",
"对IT行业技术体系有较完整的认知,熟悉当前主要技术领域发展现状和趋势;",
"对IT技术发展有较高热情和敏锐度,良好的技术选题捕捉与策划能力,执行力强;",
"有计算机图书或杂志策划编辑经验者优先;对畅销内容有自己的见。"
],
"img": "img/job_ed.png",
"other_duty": "负责软件开发技术杂志与专题图书的策划、编撰及出版工作;策划和撰写热点专刊、专题、原创文章以及其他IT类内容产品;挖掘、联络及维护IT行业技术专家,建立专家资源,共同策划出开发者喜爱的内容作品。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "bianji-2",
"imgName": "编辑",
"title": "记者编辑",
"duty": [
"根据需要策划选题内容,采访开发者、科技领导者以及其他专家并成稿;",
"负责商务内容撰写,理解客户需求,配合商务部门产出相关文章、文案及创意内容;",
"跟踪报道相关活动,产出新闻或深度解析文章;",
"配合协调渠道发布,能够独立完成文章全流程,并对文章效果负责。"
],
"requirement": [
"统招本科及以上学历,欢迎计算机专业的应届生应聘;",
"有文案创作和编写能力,对IT、开发者、云计算、大数据、AI等领域有一定认知;",
"有沟通能力,有自主想法,能够参与到相关的开发者活动之中,进行前期策划;",
"对开发及互联网领域有敏感性,能够准确把握读者心态,能独立采访或寻找相关内容并最终成稿。"
],
"img": "img/job_ed.png",
"other_duty": "根据需要策划选题内容,采访开发者、科技领导者以及其他专家并成稿;负责商务内容撰写,理解客户需求,配合商务部门产出相关文章、文案及创意内容;跟踪报道相关活动,产出新闻或深度解析文章;配合协调渠道发布,能够独立完成文章全流程,并对文章效果负责。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "xiangmu-1",
"imgName": "项目",
"title": "项目经理",
"duty": [
"作为客户合作接口,配合CSDN商务项目的整体统筹管理,协同后端小组成员完成项目落地;",
"配合销售完成项目售前评估,项目实施,项目交付三个阶段服务工作;对配合的项目执行进行具体的任务分解及风险节点的完整把控,对突发事件进行应急处理;",
"负责项目立项时设计完整的项目执行计划表,完成详实的进行任务分解及项目执行过程中的里程碑管控。目标降低项目执行风险,降低项目支持成本;",
"根据客户实际需求结合公司资源,向客户提供做优化的服务解决方案;",
"负责对公司内外部团队的协调,合理调配资源,促进跨部门的有效沟通和及时响应。"
],
"requirement": [
"本科学历,计算机相关专业,4A或知名广告营销公司项目管理经验三年以上优先考虑;",
"学习或系统参与过营销领域的项目规范体系搭建,并有相关证明;",
"性格开朗热情,在平时就是各种事务活动的组织者,做事细致,执行力强。"
],
"img": "img/job_pro.png",
"other_duty": "作为客户合作接口,配合CSDN商务项目的整体统筹管理,协同后端小组成员完成项目落地;配合销售完成项目售前评估,项目实施,项目交付三个阶段服务工作;对配合的项目执行进行具体的任务分解及风险节点的完整把控,对突发事件进行应急处理;负责项目立项时设计完整的项目执行计划表,完成详实的进行任务分解及项目执行过程中的里程碑管控。目标降低项目执行风险,降低项目支持成本;根据客户实际需求结合公司资源,向客户提供做优化的服务解决方案;负责对公司内外部团队的协调,合理调配资源,促进跨部门的有效沟通和及时响应。",
"pluse": [],
"material": [],
"area": "北京"
}]
\ No newline at end of file
/*
* @Author: Administrator
* @Date: 2017-08-17 16:57:00
* @Last Modified by: Administrator
* @Last Modified time: 2017-08-17 16:57:25
*/
/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
\ No newline at end of file
jQuery(document).ready(function ($) {
//open-close submenu on mobile
$('.cd-main-nav').on('click', function (event) {
if ($(event.target).is('.cd-main-nav')) $(this).children('ul').toggleClass('is-visible');
});
$('.cd-main-nav li').on('click', function () {
$(this).parent('ul').removeClass('is-visible')
});
});
\ No newline at end of file
/*!
* Modernizr v2.7.1
* www.modernizr.com
*
* Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
* Available under the BSD and MIT licenses: www.modernizr.com/license/
*/
/*
* Modernizr tests which native CSS3 and HTML5 features are available in
* the current UA and makes the results available to you in two ways:
* as properties on a global Modernizr object, and as classes on the
* <html> element. This information allows you to progressively enhance
* your pages with a granular level of control over the experience.
*
* Modernizr has an optional (not included) conditional resource loader
* called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
* To get a build that includes Modernizr.load(), as well as choosing
* which tests to include, go to www.modernizr.com/download/
*
* Authors Faruk Ates, Paul Irish, Alex Sexton
* Contributors Ryan Seddon, Ben Alman
*/
window.Modernizr = (function( window, document, undefined ) {
var version = '2.7.1',
Modernizr = {},
/*>>cssclasses*/
// option for enabling the HTML classes to be added
enableClasses = true,
/*>>cssclasses*/
docElement = document.documentElement,
/**
* Create our "modernizr" element that we do most feature tests on.
*/
mod = 'modernizr',
modElem = document.createElement(mod),
mStyle = modElem.style,
/**
* Create the input element for various Web Forms feature tests.
*/
inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
/*>>smile*/
smile = ':)',
/*>>smile*/
toString = {}.toString,
// TODO :: make the prefixes more granular
/*>>prefixes*/
// List of property values to set for css tests. See ticket #21
prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
/*>>prefixes*/
/*>>domprefixes*/
// Following spec is to expose vendor-specific style properties as:
// elem.style.WebkitBorderRadius
// and the following would be incorrect:
// elem.style.webkitBorderRadius
// Webkit ghosts their properties in lowercase but Opera & Moz do not.
// Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
// erik.eae.net/archives/2008/03/10/21.48.10/
// More here: github.com/Modernizr/Modernizr/issues/issue/21
omPrefixes = 'Webkit Moz O ms',
cssomPrefixes = omPrefixes.split(' '),
domPrefixes = omPrefixes.toLowerCase().split(' '),
/*>>domprefixes*/
/*>>ns*/
ns = {'svg': 'http://www.w3.org/2000/svg'},
/*>>ns*/
tests = {},
inputs = {},
attrs = {},
classes = [],
slice = classes.slice,
featureName, // used in testing loop
/*>>teststyles*/
// Inject element with style element and some CSS rules
injectElementWithStyles = function( rule, callback, nodes, testnames ) {
var style, ret, node, docOverflow,
div = document.createElement('div'),
// After page load injecting a fake body doesn't work so check if body exists
body = document.body,
// IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
fakeBody = body || document.createElement('body');
if ( parseInt(nodes, 10) ) {
// In order not to give false positives we create a node for each test
// This also allows the method to scale for unspecified uses
while ( nodes-- ) {
node = document.createElement('div');
node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
div.appendChild(node);
}
}
// <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
// when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
// with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
// msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
// Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
div.id = mod;
// IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
// Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
(body ? div : fakeBody).innerHTML += style;
fakeBody.appendChild(div);
if ( !body ) {
//avoid crashing IE8, if background image is used
fakeBody.style.background = '';
//Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
fakeBody.style.overflow = 'hidden';
docOverflow = docElement.style.overflow;
docElement.style.overflow = 'hidden';
docElement.appendChild(fakeBody);
}
ret = callback(div, rule);
// If this is done after page load we don't want to remove the body so check if body exists
if ( !body ) {
fakeBody.parentNode.removeChild(fakeBody);
docElement.style.overflow = docOverflow;
} else {
div.parentNode.removeChild(div);
}
return !!ret;
},
/*>>teststyles*/
/*>>mq*/
// adapted from matchMedia polyfill
// by Scott Jehl and Paul Irish
// gist.github.com/786768
testMediaQuery = function( mq ) {
var matchMedia = window.matchMedia || window.msMatchMedia;
if ( matchMedia ) {
return matchMedia(mq).matches;
}
var bool;
injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
bool = (window.getComputedStyle ?
getComputedStyle(node, null) :
node.currentStyle)['position'] == 'absolute';
});
return bool;
},
/*>>mq*/
/*>>hasevent*/
//
// isEventSupported determines if a given element supports the given event
// kangax.github.com/iseventsupported/
//
// The following results are known incorrects:
// Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
// Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
// ...
isEventSupported = (function() {
var TAGNAMES = {
'select': 'input', 'change': 'input',
'submit': 'form', 'reset': 'form',
'error': 'img', 'load': 'img', 'abort': 'img'
};
function isEventSupported( eventName, element ) {
element = element || document.createElement(TAGNAMES[eventName] || 'div');
eventName = 'on' + eventName;
// When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
var isSupported = eventName in element;
if ( !isSupported ) {
// If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
if ( !element.setAttribute ) {
element = document.createElement('div');
}
if ( element.setAttribute && element.removeAttribute ) {
element.setAttribute(eventName, '');
isSupported = is(element[eventName], 'function');
// If property was created, "remove it" (by setting value to `undefined`)
if ( !is(element[eventName], 'undefined') ) {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
element = null;
return isSupported;
}
return isEventSupported;
})(),
/*>>hasevent*/
// TODO :: Add flag for hasownprop ? didn't last time
// hasOwnProperty shim by kangax needed for Safari 2.0 support
_hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
hasOwnProp = function (object, property) {
return _hasOwnProperty.call(object, property);
};
}
else {
hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
};
}
// Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
// es5.github.com/#x15.3.4.5
if (!Function.prototype.bind) {
Function.prototype.bind = function bind(that) {
var target = this;
if (typeof target != "function") {
throw new TypeError();
}
var args = slice.call(arguments, 1),
bound = function () {
if (this instanceof bound) {
var F = function(){};
F.prototype = target.prototype;
var self = new F();
var result = target.apply(
self,
args.concat(slice.call(arguments))
);
if (Object(result) === result) {
return result;
}
return self;
} else {
return target.apply(
that,
args.concat(slice.call(arguments))
);
}
};
return bound;
};
}
/**
* setCss applies given styles to the Modernizr DOM node.
*/
function setCss( str ) {
mStyle.cssText = str;
}
/**
* setCssAll extrapolates all vendor-specific css strings.
*/
function setCssAll( str1, str2 ) {
return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
}
/**
* is returns a boolean for if typeof obj is exactly type.
*/
function is( obj, type ) {
return typeof obj === type;
}
/**
* contains returns a boolean for if substr is found within str.
*/
function contains( str, substr ) {
return !!~('' + str).indexOf(substr);
}
/*>>testprop*/
// testProps is a generic CSS / DOM property test.
// In testing support for a given CSS property, it's legit to test:
// `elem.style[styleName] !== undefined`
// If the property is supported it will return an empty string,
// if unsupported it will return undefined.
// We'll take advantage of this quick test and skip setting a style
// on our modernizr element, but instead just testing undefined vs
// empty string.
// Because the testing of the CSS property names (with "-", as
// opposed to the camelCase DOM properties) is non-portable and
// non-standard but works in WebKit and IE (but not Gecko or Opera),
// we explicitly reject properties with dashes so that authors
// developing in WebKit or IE first don't end up with
// browser-specific content by accident.
function testProps( props, prefixed ) {
for ( var i in props ) {
var prop = props[i];
if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
return prefixed == 'pfx' ? prop : true;
}
}
return false;
}
/*>>testprop*/
// TODO :: add testDOMProps
/**
* testDOMProps is a generic DOM property test; if a browser supports
* a certain property, it won't return undefined for it.
*/
function testDOMProps( props, obj, elem ) {
for ( var i in props ) {
var item = obj[props[i]];
if ( item !== undefined) {
// return the property name as a string
if (elem === false) return props[i];
// let's bind a function
if (is(item, 'function')){
// default to autobind unless override
return item.bind(elem || obj);
}
// return the unbound function or obj or value
return item;
}
}
return false;
}
/*>>testallprops*/
/**
* testPropsAll tests a list of DOM properties we want to check against.
* We specify literally ALL possible (known and/or likely) properties on
* the element including the non-vendor prefixed one, for forward-
* compatibility.
*/
function testPropsAll( prop, prefixed, elem ) {
var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
// did they call .prefixed('boxSizing') or are we just testing a prop?
if(is(prefixed, "string") || is(prefixed, "undefined")) {
return testProps(props, prefixed);
// otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
} else {
props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
return testDOMProps(props, prefixed, elem);
}
}
/*>>testallprops*/
/**
* Tests
* -----
*/
// The *new* flexbox
// dev.w3.org/csswg/css3-flexbox
tests['flexbox'] = function() {
return testPropsAll('flexWrap');
};
// The *old* flexbox
// www.w3.org/TR/2009/WD-css3-flexbox-20090723/
tests['flexboxlegacy'] = function() {
return testPropsAll('boxDirection');
};
// On the S60 and BB Storm, getContext exists, but always returns undefined
// so we actually have to call getContext() to verify
// github.com/Modernizr/Modernizr/issues/issue/97/
tests['canvas'] = function() {
var elem = document.createElement('canvas');
return !!(elem.getContext && elem.getContext('2d'));
};
tests['canvastext'] = function() {
return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
};
// webk.it/70117 is tracking a legit WebGL feature detect proposal
// We do a soft detect which may false positive in order to avoid
// an expensive context creation: bugzil.la/732441
tests['webgl'] = function() {
return !!window.WebGLRenderingContext;
};
/*
* The Modernizr.touch test only indicates if the browser supports
* touch events, which does not necessarily reflect a touchscreen
* device, as evidenced by tablets running Windows 7 or, alas,
* the Palm Pre / WebOS (touch) phones.
*
* Additionally, Chrome (desktop) used to lie about its support on this,
* but that has since been rectified: crbug.com/36415
*
* We also test for Firefox 4 Multitouch Support.
*
* For more info, see: modernizr.github.com/Modernizr/touch.html
*/
tests['touch'] = function() {
var bool;
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
bool = true;
} else {
injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
bool = node.offsetTop === 9;
});
}
return bool;
};
// geolocation is often considered a trivial feature detect...
// Turns out, it's quite tricky to get right:
//
// Using !!navigator.geolocation does two things we don't want. It:
// 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
// 2. Disables page caching in WebKit: webk.it/43956
//
// Meanwhile, in Firefox < 8, an about:config setting could expose
// a false positive that would throw an exception: bugzil.la/688158
tests['geolocation'] = function() {
return 'geolocation' in navigator;
};
tests['postmessage'] = function() {
return !!window.postMessage;
};
// Chrome incognito mode used to throw an exception when using openDatabase
// It doesn't anymore.
tests['websqldatabase'] = function() {
return !!window.openDatabase;
};
// Vendors had inconsistent prefixing with the experimental Indexed DB:
// - Webkit's implementation is accessible through webkitIndexedDB
// - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
// For speed, we don't test the legacy (and beta-only) indexedDB
tests['indexedDB'] = function() {
return !!testPropsAll("indexedDB", window);
};
// documentMode logic from YUI to filter out IE8 Compat Mode
// which false positives.
tests['hashchange'] = function() {
return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
};
// Per 1.6:
// This used to be Modernizr.historymanagement but the longer
// name has been deprecated in favor of a shorter and property-matching one.
// The old API is still available in 1.6, but as of 2.0 will throw a warning,
// and in the first release thereafter disappear entirely.
tests['history'] = function() {
return !!(window.history && history.pushState);
};
tests['draganddrop'] = function() {
var div = document.createElement('div');
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
};
// FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
// will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
// FF10 still uses prefixes, so check for it until then.
// for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
tests['websockets'] = function() {
return 'WebSocket' in window || 'MozWebSocket' in window;
};
// css-tricks.com/rgba-browser-support/
tests['rgba'] = function() {
// Set an rgba() color and check the returned value
setCss('background-color:rgba(150,255,150,.5)');
return contains(mStyle.backgroundColor, 'rgba');
};
tests['hsla'] = function() {
// Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
// except IE9 who retains it as hsla
setCss('background-color:hsla(120,40%,100%,.5)');
return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
};
tests['multiplebgs'] = function() {
// Setting multiple images AND a color on the background shorthand property
// and then querying the style.background property value for the number of
// occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
setCss('background:url(https://),url(https://),red url(https://)');
// If the UA supports multiple backgrounds, there should be three occurrences
// of the string "url(" in the return value for elemStyle.background
return (/(url\s*\(.*?){3}/).test(mStyle.background);
};
// this will false positive in Opera Mini
// github.com/Modernizr/Modernizr/issues/396
tests['backgroundsize'] = function() {
return testPropsAll('backgroundSize');
};
tests['borderimage'] = function() {
return testPropsAll('borderImage');
};
// Super comprehensive table about all the unique implementations of
// border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
tests['borderradius'] = function() {
return testPropsAll('borderRadius');
};
// WebOS unfortunately false positives on this test.
tests['boxshadow'] = function() {
return testPropsAll('boxShadow');
};
// FF3.0 will false positive on this test
tests['textshadow'] = function() {
return document.createElement('div').style.textShadow === '';
};
tests['opacity'] = function() {
// Browsers that actually have CSS Opacity implemented have done so
// according to spec, which means their return values are within the
// range of [0.0,1.0] - including the leading zero.
setCssAll('opacity:.55');
// The non-literal . in this regex is intentional:
// German Chrome returns this value as 0,55
// github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
return (/^0.55$/).test(mStyle.opacity);
};
// Note, Android < 4 will pass this test, but can only animate
// a single property at a time
// daneden.me/2011/12/putting-up-with-androids-bullshit/
tests['cssanimations'] = function() {
return testPropsAll('animationName');
};
tests['csscolumns'] = function() {
return testPropsAll('columnCount');
};
tests['cssgradients'] = function() {
/**
* For CSS Gradients syntax, please see:
* webkit.org/blog/175/introducing-css-gradients/
* developer.mozilla.org/en/CSS/-moz-linear-gradient
* developer.mozilla.org/en/CSS/-moz-radial-gradient
* dev.w3.org/csswg/css3-images/#gradients-
*/
var str1 = 'background-image:',
str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
str3 = 'linear-gradient(left top,#9f9, white);';
setCss(
// legacy webkit syntax (FIXME: remove when syntax not in use anymore)
(str1 + '-webkit- '.split(' ').join(str2 + str1) +
// standard syntax // trailing 'background-image:'
prefixes.join(str3 + str1)).slice(0, -str1.length)
);
return contains(mStyle.backgroundImage, 'gradient');
};
tests['cssreflections'] = function() {
return testPropsAll('boxReflect');
};
tests['csstransforms'] = function() {
return !!testPropsAll('transform');
};
tests['csstransforms3d'] = function() {
var ret = !!testPropsAll('perspective');
// Webkit's 3D transforms are passed off to the browser's own graphics renderer.
// It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
// some conditions. As a result, Webkit typically recognizes the syntax but
// will sometimes throw a false positive, thus we must do a more thorough check:
if ( ret && 'webkitPerspective' in docElement.style ) {
// Webkit allows this media query to succeed only if the feature is enabled.
// `@media (transform-3d),(-webkit-transform-3d){ ... }`
injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
ret = node.offsetLeft === 9 && node.offsetHeight === 3;
});
}
return ret;
};
tests['csstransitions'] = function() {
return testPropsAll('transition');
};
/*>>fontface*/
// @font-face detection routine by Diego Perini
// javascript.nwbox.com/CSSSupport/
// false positives:
// WebOS github.com/Modernizr/Modernizr/issues/342
// WP7 github.com/Modernizr/Modernizr/issues/538
tests['fontface'] = function() {
var bool;
injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
var style = document.getElementById('smodernizr'),
sheet = style.sheet || style.styleSheet,
cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
});
return bool;
};
/*>>fontface*/
// CSS generated content detection
tests['generatedcontent'] = function() {
var bool;
injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
bool = node.offsetHeight >= 3;
});
return bool;
};
// These tests evaluate support of the video/audio elements, as well as
// testing what types of content they support.
//
// We're using the Boolean constructor here, so that we can extend the value
// e.g. Modernizr.video // true
// Modernizr.video.ogg // 'probably'
//
// Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
// thx to NielsLeenheer and zcorpan
// Note: in some older browsers, "no" was a return value instead of empty string.
// It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
// It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
tests['video'] = function() {
var elem = document.createElement('video'),
bool = false;
// IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
try {
if ( bool = !!elem.canPlayType ) {
bool = new Boolean(bool);
bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
// Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
}
} catch(e) { }
return bool;
};
tests['audio'] = function() {
var elem = document.createElement('audio'),
bool = false;
try {
if ( bool = !!elem.canPlayType ) {
bool = new Boolean(bool);
bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
// Mimetypes accepted:
// developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
// bit.ly/iphoneoscodecs
bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
}
} catch(e) { }
return bool;
};
// In FF4, if disabled, window.localStorage should === null.
// Normally, we could not test that directly and need to do a
// `('localStorage' in window) && ` test first because otherwise Firefox will
// throw bugzil.la/365772 if cookies are disabled
// Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
// will throw the exception:
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.
// Peculiarly, getItem and removeItem calls do not throw.
// Because we are forced to try/catch this, we'll go aggressive.
// Just FWIW: IE8 Compat mode supports these features completely:
// www.quirksmode.org/dom/html5.html
// But IE8 doesn't support either with local files
tests['localstorage'] = function() {
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
tests['sessionstorage'] = function() {
try {
sessionStorage.setItem(mod, mod);
sessionStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
tests['webworkers'] = function() {
return !!window.Worker;
};
tests['applicationcache'] = function() {
return !!window.applicationCache;
};
// Thanks to Erik Dahlstrom
tests['svg'] = function() {
return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
};
// specifically for SVG inline in HTML, not within XHTML
// test page: paulirish.com/demo/inline-svg
tests['inlinesvg'] = function() {
var div = document.createElement('div');
div.innerHTML = '<svg/>';
return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
};
// SVG SMIL animation
tests['smil'] = function() {
return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
};
// This test is only for clip paths in SVG proper, not clip paths on HTML content
// demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
// However read the comments to dig into applying SVG clippaths to HTML content here:
// github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
tests['svgclippaths'] = function() {
return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
};
/*>>webforms*/
// input features and input types go directly onto the ret object, bypassing the tests loop.
// Hold this guy to execute in a moment.
function webforms() {
/*>>input*/
// Run through HTML5's new input attributes to see if the UA understands any.
// We're using f which is the <input> element created early on
// Mike Taylr has created a comprehensive resource for testing these attributes
// when applied to all input types:
// miketaylr.com/code/input-type-attr.html
// spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
// Only input placeholder is tested while textarea's placeholder is not.
// Currently Safari 4 and Opera 11 have support only for the input placeholder
// Both tests are available in feature-detects/forms-placeholder.js
Modernizr['input'] = (function( props ) {
for ( var i = 0, len = props.length; i < len; i++ ) {
attrs[ props[i] ] = !!(props[i] in inputElem);
}
if (attrs.list){
// safari false positive's on datalist: webk.it/74252
// see also github.com/Modernizr/Modernizr/issues/146
attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
}
return attrs;
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
/*>>input*/
/*>>inputtypes*/
// Run through HTML5's new input types to see if the UA understands any.
// This is put behind the tests runloop because it doesn't return a
// true/false like all the other tests; instead, it returns an object
// containing each input type with its corresponding true/false value
// Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
Modernizr['inputtypes'] = (function(props) {
for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
inputElem.setAttribute('type', inputElemType = props[i]);
bool = inputElem.type !== 'text';
// We first check to see if the type we give it sticks..
// If the type does, we feed it a textual value, which shouldn't be valid.
// If the value doesn't stick, we know there's input sanitization which infers a custom UI
if ( bool ) {
inputElem.value = smile;
inputElem.style.cssText = 'position:absolute;visibility:hidden;';
if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
docElement.appendChild(inputElem);
defaultView = document.defaultView;
// Safari 2-4 allows the smiley as a value, despite making a slider
bool = defaultView.getComputedStyle &&
defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
// Mobile android web browser has false positive, so must
// check the height to see if the widget is actually there.
(inputElem.offsetHeight !== 0);
docElement.removeChild(inputElem);
} else if ( /^(search|tel)$/.test(inputElemType) ){
// Spec doesn't define any special parsing or detectable UI
// behaviors so we pass these through as true
// Interestingly, opera fails the earlier test, so it doesn't
// even make it here.
} else if ( /^(url|email)$/.test(inputElemType) ) {
// Real url and email support comes with prebaked validation.
bool = inputElem.checkValidity && inputElem.checkValidity() === false;
} else {
// If the upgraded input compontent rejects the :) text, we got a winner
bool = inputElem.value != smile;
}
}
inputs[ props[i] ] = !!bool;
}
return inputs;
})('search tel url email datetime date month week time datetime-local number range color'.split(' '));
/*>>inputtypes*/
}
/*>>webforms*/
// End of test definitions
// -----------------------
// Run through all tests and detect their support in the current UA.
// todo: hypothetically we could be doing an array of tests and use a basic loop here.
for ( var feature in tests ) {
if ( hasOwnProp(tests, feature) ) {
// run the test, throw the return value into the Modernizr,
// then based on that boolean, define an appropriate className
// and push it into an array of classes we'll join later.
featureName = feature.toLowerCase();
Modernizr[featureName] = tests[feature]();
classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
}
}
/*>>webforms*/
// input tests need to run.
Modernizr.input || webforms();
/*>>webforms*/
/**
* addTest allows the user to define their own feature tests
* the result will be added onto the Modernizr object,
* as well as an appropriate className set on the html element
*
* @param feature - String naming the feature
* @param test - Function returning true if feature is supported, false if not
*/
Modernizr.addTest = function ( feature, test ) {
if ( typeof feature == 'object' ) {
for ( var key in feature ) {
if ( hasOwnProp( feature, key ) ) {
Modernizr.addTest( key, feature[ key ] );
}
}
} else {
feature = feature.toLowerCase();
if ( Modernizr[feature] !== undefined ) {
// we're going to quit if you're trying to overwrite an existing test
// if we were to allow it, we'd do this:
// var re = new RegExp("\\b(no-)?" + feature + "\\b");
// docElement.className = docElement.className.replace( re, '' );
// but, no rly, stuff 'em.
return Modernizr;
}
test = typeof test == 'function' ? test() : test;
if (typeof enableClasses !== "undefined" && enableClasses) {
docElement.className += ' ' + (test ? '' : 'no-') + feature;
}
Modernizr[feature] = test;
}
return Modernizr; // allow chaining.
};
// Reset modElem.cssText to nothing to reduce memory footprint.
setCss('');
modElem = inputElem = null;
/*>>shiv*/
/**
* @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
var version = '3.7.0';
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv';
/** The id for the the documents expando */
var expanID = 0;
/** Cached data for each document */
var expandoData = {};
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
try {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
(document.createElement)('a');
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
} catch(e) {
// assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true;
supportsUnknownElements = true;
}
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Returns the data associated to the given document
* @private
* @param {Document} ownerDocument The document.
* @returns {Object} An object of data.
*/
function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]];
if (!data) {
data = {};
expanID++;
ownerDocument[expando] = expanID;
expandoData[expanID] = data;
}
return data;
}
/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createElement(nodeName);
}
if (!data) {
data = getExpandoData(ownerDocument);
}
var node;
if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else {
node = data.createElem(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
}
/**
* returns a shived DocumentFragment for the given document
* @memberOf html5
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment.
*/
function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createDocumentFragment();
}
data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(),
i = 0,
elems = getElements(),
l = elems.length;
for(;i<l;i++){
clone.createElement(elems[i]);
}
return clone;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document.
*/
function shivMethods(ownerDocument, data) {
if (!data.cache) {
data.cache = {};
data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag();
}
ownerDocument.createElement = function(nodeName) {
//abort shiv
if (!html5.shivMethods) {
return data.createElem(nodeName);
}
return createElement(nodeName, ownerDocument, data);
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/[\w\-]+/g, function(nodeName) {
data.createElem(nodeName);
data.frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, data.frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
if (!ownerDocument) {
ownerDocument = document;
}
var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}' +
// hides non-rendered elements
'template{display:none}'
);
}
if (!supportsUnknownElements) {
shivMethods(ownerDocument, data);
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
/**
* current version of html5shiv
*/
'version': version,
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': (options.shivCSS !== false),
/**
* Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5
* @type boolean
*/
'supportsUnknownElements': supportsUnknownElements,
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': (options.shivMethods !== false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument,
//creates a shived element
createElement: createElement,
//creates a shived documentFragment
createDocumentFragment: createDocumentFragment
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));
/*>>shiv*/
// Assign private properties to the return object with prefix
Modernizr._version = version;
// expose these for the plugin API. Look in the source for how to join() them against your input
/*>>prefixes*/
Modernizr._prefixes = prefixes;
/*>>prefixes*/
/*>>domprefixes*/
Modernizr._domPrefixes = domPrefixes;
Modernizr._cssomPrefixes = cssomPrefixes;
/*>>domprefixes*/
/*>>mq*/
// Modernizr.mq tests a given media query, live against the current state of the window
// A few important notes:
// * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
// * A max-width or orientation query will be evaluated against the current state, which may change later.
// * You must specify values. Eg. If you are testing support for the min-width media query use:
// Modernizr.mq('(min-width:0)')
// usage:
// Modernizr.mq('only screen and (max-width:768)')
Modernizr.mq = testMediaQuery;
/*>>mq*/
/*>>hasevent*/
// Modernizr.hasEvent() detects support for a given event, with an optional element to test on
// Modernizr.hasEvent('gesturestart', elem)
Modernizr.hasEvent = isEventSupported;
/*>>hasevent*/
/*>>testprop*/
// Modernizr.testProp() investigates whether a given style property is recognized
// Note that the property names must be provided in the camelCase variant.
// Modernizr.testProp('pointerEvents')
Modernizr.testProp = function(prop){
return testProps([prop]);
};
/*>>testprop*/
/*>>testallprops*/
// Modernizr.testAllProps() investigates whether a given style property,
// or any of its vendor-prefixed variants, is recognized
// Note that the property names must be provided in the camelCase variant.
// Modernizr.testAllProps('boxSizing')
Modernizr.testAllProps = testPropsAll;
/*>>testallprops*/
/*>>teststyles*/
// Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
// Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
Modernizr.testStyles = injectElementWithStyles;
/*>>teststyles*/
/*>>prefixed*/
// Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
// Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
// Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
// Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
//
// str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
// If you're trying to ascertain which transition end event to bind to, you might do something like...
//
// var transEndEventNames = {
// 'WebkitTransition' : 'webkitTransitionEnd',
// 'MozTransition' : 'transitionend',
// 'OTransition' : 'oTransitionEnd',
// 'msTransition' : 'MSTransitionEnd',
// 'transition' : 'transitionend'
// },
// transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
Modernizr.prefixed = function(prop, obj, elem){
if(!obj) {
return testPropsAll(prop, 'pfx');
} else {
// Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
return testPropsAll(prop, obj, elem);
}
};
/*>>prefixed*/
/*>>cssclasses*/
// Remove "no-js" class from <html> element, if it exists:
docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
// Add the new classes to the <html> element.
(enableClasses ? ' js ' + classes.join(' ') : '');
/*>>cssclasses*/
return Modernizr;
})(this, this.document);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#contact"; </script>
</head>
<body>
</body>
</html>
<li>
<a href=@@src target=@@target >@@title</a>
</li>
\ No newline at end of file
<li>
<a href=@@src_job target=@@target >@@title</a>
</li>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#recruit"; </script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
<script>
/**
* wap 跳转app引流按钮
*
* http://jira.csdn.net/browse/FED-315
*/
;(function(window){
// 多onload 事件方法
window.addLoadEvent = window.addLoadEvent ? window.addLoadEvent : function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload != 'function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
};
}
};
/**
* 获取第一个子元素
*/
var getChildNodes = function(ele){
var childArr = ele.children || ele.childNodes,
childArrTem = new Array(); // 临时数组,用来存储符合条件的节点
for(var i=0,len=childArr.length;i<len;i++){
if(childArr[i].nodeType==1){
childArrTem.push(childArr[i]);
}
}
return childArrTem;
};
/**
* 加载css
*/
function setStyle(poi){
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = ( [
'.wapappdownloadbox{width:100%;height:60px;background: #3F3F3F;position:'+poi+';top: 0;z-index: 999;}',
'.wapapp_download_box{padding:10px 4px 10px 16px;width: 82%;float: left;}',
'.wapapp_download_box img{width:40px;float: left;margin-right: 8px;}',
'.wapapp_download_text{float:left;width: 50%;}',
'.wapapp_download_text h4{font-size: 16px;color: #FFFFFF;line-height: 20px;}',
'.wapapp_download_text b{font-size: 12px;color: #999999;line-height: 20px;font-weight: 400;}',
'.wapappdownloadbox .download_button{float:right;background: #F33B45;border-radius: 4px;font-size: 12px;color: #FFFFFF;line-height: 16px;padding:6px 12px;margin-top:6px;}',
'.wapappdownloadbox_close_button{width: 17%;height: 60px;float: right;padding: 18px 19px;text-align: center;}',
'.wapappdownloadbox_close_button svg{width: 15px;fill: #999;}',
]).join('');
document.getElementsByTagName('head')[0].appendChild(css);
}
/**
* class
*/
function OpenWithApp(){
}
OpenWithApp.prototype.init = function(obj){
// console.log(obj);
obj = obj ? obj : {};
/**
* moveDOM 是为了fixed 到顶部的header等准备的,有此参数则需把此 节点 定位向下挪动
*/
this.moveDOM = obj.moveDOM;
setStyle(obj.position);
var buttonBox = document.createElement('div'),
parentElement = document.getElementsByTagName('body')[0],
referenceElement = getChildNodes(parentElement)[0];
buttonBox.setAttribute("class", "wapappdownloadbox");
this.parentElementstartPposition = getStyle(parentElement,'paddingTop');
buttonBox.innerHTML = getTemplate();
if(obj.position === 'fixed'){
this.moveDOMstartPposition = getStyle(this.moveDOM,top);
this.moveDOM ? this.moveDOM.setAttribute('style','top:60px'): '';
parentElement.setAttribute('style','padding-top:60px');
}
// 插入结构
parentElement.insertBefore(buttonBox, referenceElement);
this.buttonBox = buttonBox;
this.parentElement = parentElement;
var that = this;
bindclick(that);
};
OpenWithApp.prototype.open = function(url){
window.location.href = "csdnapp://web?url=https://blog.csdn.net/rx3oyuyi/app/article/details/86700683";
setTimeout(function() {
window.location.href = "https://gw.csdn.net/cms-app/v1/set/download_app/?utm_source=wap";
}, 1500);
}
function getTemplate(){
return '<div class="wapapp_download_box" data-track-view=\'{"mod":"popu_726","con":",'+ window.location.href+',"}\' data-track-click=\'{"mod":"popu_726","con":",'+ window.location.href+',"}\'>'+
'<img src="//g.csdnimg.cn/open-with-app/images/appIcon.png">'+
'<div class="wapapp_download_text">'+
'<h4>CSDN官方APP</h4>'+
'<b>中国专业的IT社区</b>'+
'</div>'+
'<a class="download_button" href="javascript:void(0);">立即下载</a>'+
'</div>'+
'<div class="wapappdownloadbox_close_button"><svg version="1.1" viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" ><path d="M100,85.6l57.5-57.5c4-4,10.4-4,14.4,0c4,4,4,10.4,0,14.4L114.4,100l57.5,57.5c3.9,4.1,3.7,10.5-0.4,14.4 c-3.9,3.7-10.1,3.7-14,0L100,114.4l-57.5,57.5c-4,4-10.4,4-14.4,0s-4-10.4,0-14.4L85.6,100L28.1,42.5c-4-4-4-10.4,0-14.4 s10.4-4,14.4,0L100,85.6z"/></svg></div>';
}
function bindclick(that){
/**
* 跳转
*/
document.getElementsByClassName('wapapp_download_box')[0].addEventListener('click',function () {
var url = "csdnapp://web?url=https://blog.csdn.net/jiangwei0910410003";
csdn.openWithApp.open(url)
});
/**
* 关闭按钮
*/
document.getElementsByClassName('wapappdownloadbox_close_button')[0].addEventListener('click',function () {
that.buttonBox.setAttribute("style", "display:none");
that.moveDOM ? that.moveDOM.setAttribute('style','top:' + that.moveDOMstartPposition ) : '';
that.parentElement.setAttribute('style','padding-top:'+ that.parentElementstartPposition );
});
}
/**
* 获取需要的dom样式
*/
function getStyle(ele,css){
return window.getComputedStyle(ele).css;
}
csdn = window.csdn?window.csdn:{}
csdn.openWithApp = new OpenWithApp();
// OpenWithApp.init(window.csdn.wapjumpapp);
})(window);
</script>
<script type="text/javascript">
window.onload = function(){
window.csdn.openWithAppData = {};
window.csdn.openWithAppData.moveDOM = document.body;
window.csdn.openWithAppData.position = 'fixed';
window.csdn.openWithApp.init(window.csdn.openWithAppData);
}
</script>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册