87,907
社区成员
发帖
与我相关
我的任务
分享
<html>
<head>
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>微信扫描登录</title>
<link rel="stylesheet" type="text/css" href="css/app.css" />
<link rel="stylesheet" type="text/css" href="css/prism.css" />
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/library.min.js"></script>
<script type="text/javascript" src="js/wx_client.js"></script>
<script type="text/javascript" src="js/wx_app.js"></script>
</head>
<body>
<div id="div_headimgs">
<img id="qr1" src="http://42.159.152.47/wx/qrcode/OA?rand=<%= ((int)(Math.random()*900)+100) %>&name=chrome" />
<!-- <img id="qr1" src="http://42.159.152.47/wx/qrcode/1?name=chrome" /> -->
<!-- <img id="#永久二维码" src="http://42.159.152.47/wx/qrcode/2?name=firefox" /> -->
</div>
</body>
</html>
(function() {
var $,
__slice = [].slice;
$ = jQuery;
//为`jQuery`对象扩展`scan`方法,注册或触发二维码扫描事件。
$.fn.scan = function(handler, options) {
//直接调用`scan`时,触发`jQuery`对象的`scan`事件。
if (!arguments.length) {
return this.trigger('scan');
}
//对选区内二维码逐一处理,等候其扫描事件。
return this.each(function() {
var continuous, error, expires, img, load, msg_ids, new_src, src;
msg_ids = {};
// + 缓存原始图片地址,供载入失败或失效时刷新用;
// + 变量`img`实时指向有效的图片元素;
// + 临时二维码有效时间为`1800`秒。
if (!(src = $(this).attr('src'))) {
return;
}
continuous = $(this).attr('continuous') != null;
img = this;
expires = 1800 * 1000;
//手工触发`scan`时,用自定义参数调用二维码扫描句柄。
$(this).on('scan', null, null, function() {
var args, event;
event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
return handler != null ? handler.apply(img, args) : void 0;
});
//增补当前时间生成新地址,以防浏览器缓存原图片。
new_src = function() {
var w_query;
w_query = src.indexOf('?') !== -1;
return "" + src + (w_query ? '&' : '?') + "t=" + (Date.now());
};
//二维码图片载入后:
load = function() {
//1. 显示图片;
//2. 轮询扫码结果。
var permanent, polling, refresh;
$(img).show();
(polling = (function(_this) {
return function() {
var timeout;
if (!$(img).is(':visible')) {
return;
}
timeout = setTimeout(polling, 25000);
return (function() {
var scan_url, start;
start = Date.now();
scan_url = encodeURI(decodeURI(src.replace(/(.*)(\/qrcode)($|((\?|\/).*))/i, '$1/scan$3')));
scan_url = scan_url.indexOf('?') !== -1 ? scan_url + ("&t=" + (Date.now())) : scan_url + ("?t=" + (Date.now()));
return $.ajax(scan_url).success(function(params) {
var msg_id, _ref;
clearTimeout(timeout);
$(img).addClass('scanned');
// alert("x");
_ref = params, msg_id = _ref[0], params = 2 <= _ref.length ? __slice.call(_ref, 1) : [];
if (msg_ids[msg_id]) {
return;
}
msg_ids[msg_id] = 1;
if (handler != null) {
handler.apply(img, params);
}
if (continuous) {
return polling();
}
//请求失败时,
}).fail(function(xhr, status) {
// $(img).addClass('scanned');
if (xhr.status === 404) {
return;
}
clearTimeout(timeout);
return polling();
});
})();
};
})(this))();
//二维码失效后刷新二维码:
// 1. 如果图片已经不可见,不更新图片;
// 2. 创建新的图片元素,设置图片地址;
// 3. 载入成功后,替换原图,重新计时;
// 4. 载入失败后,重复刷新二维码流程。
if (permanent = src.match(/\/qrcode\/\d+(\?|$)/)) {
return;
}
return setTimeout(refresh = (function(_this) {
return function() {
if (!$(img).is(':visible')) {
return;
}
return $(img).clone().attr('src', new_src()).hide().appendTo(document.body).load(function() {
if (!$(img).is(':visible')) {
return;
}
img = $(this).replaceAll(img).show().get(0);
return setTimeout(refresh, expires);
}).error(function() {
$(this).remove();
return refresh();
});
};
})(this), expires);
};
error = function() {
//图片载入失败时,更新图片地址(重试)。
return $(this).attr('src', new_src());
};
//注册载入成功与失败事件。
$(this).load(load).error(error);
if (this.complete) {
//如已经载入,手动触发载入事件。
return $(this).load();
}
});
};
}).call(this);
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>微信扫描登录</title>
<link rel="stylesheet" type="text/css" href="css/app.css" />
<link rel="stylesheet" type="text/css" href="css/prism.css" />
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/library.min.js"></script>
<script type="text/javascript" src="js/wx_client.js"></script>
<script type="text/javascript" src="js/wx_app.js"></script>
</head>
<body>
<% response.setHeader("Access-Control-Allow-Origin", "*"); %>
<div class="login_pic">
<img id="qr1" src="http://42.159.152.47/wx/qrcode/OA?rand=<%= ((int)(Math.random()*900)+100) %>&name=chrome" />
<label class="scan"></label>
<!-- <img id="qr1" src="http://42.159.152.47/wx/qrcode/1?name=chrome" /> -->
<!-- <img id="#永久二维码" src="http://42.159.152.47/wx/qrcode/2?name=firefox" /> -->
</div>
</body>
</html>
Response.AddHeader("Access-Control-Allow-Origin", "*");