JS实现仿UC浏览器前进后退效果
来源:互联网 发布:软件开发测试 编辑:程序博客网 时间:2024/06/08 20:00
部分内容参考:http://www.cnblogs.com/pengchengzhong/p/6051487.html
测试浏览器为谷歌浏览器(谷歌toggle device toolbar)
var startx, starty, endx, endy, moveX, moveY, seatX, seatY;
var clickState = false;
//获取输入框dom元素
var text = document.forms[“form”];
//设置样式
function setCss(obj) {
var cssStr = “z-index:5;width:37px;height:37px;position:absolute;left:”
+ seatX + ‘px;top:’ + seatY + ‘px;’;
//将样式添加到div上,显示div
obj.style.cssText = cssStr;
}
//计算位置
function setPosition(obj) {
if (obj == ‘left’) {
seatX = text.offsetLeft - 37; //横坐标
} else {
seatX = text.offsetLeft + text.offsetWidth; //横坐标
}
seatY = (text.offsetTop + text.offsetHeight) / 2; //纵坐标
}
//创建DIV
function createDiv(obj) {
//首先创建div
var descDiv = document.createElement(‘div’);
document.body.appendChild(descDiv);
//给div设置样式,比如大小、位置
setPosition(obj);
setCss(descDiv);
descDiv.innerHTML = ”;
descDiv.id = obj;
descDiv.style.display = ‘block’;
addElementImg(descDiv.id);
}
//添加IMG
function addElementImg(obj) {
var div = document.getElementById(obj);
//添加 img
var img = document.createElement(“img”);
//设置 img 属性,如 id
img.setAttribute(“id”, “newImg”);
//设置 img 图片地址
img.src = “/Themes/TheThemeMachine/Images/” + obj + “.png”;
div.appendChild(img);
}
//删除DIV
function removeDiv(obj) {
var el = document.getElementById(obj);
el.parentNode.removeChild(el);
}
//移动DIV
function moveDiv(obj, movex) {
if (Math.abs(movex) < 37) {
var div = document.getElementById(obj);
setPosition(obj);
seatX = seatX + movex;
setCss(div);
}
}
//根据位移改变DIV的位置
function reductionDiv(obj) {
var div = document.getElementById(obj);
setPosition(obj);
setCss(div);
}
//计算移动坐标
function calculationMoveCoordinate() {
moveX = endx - startx;
moveY = Math.abs(endy - starty);
if (moveX > 0)
moveDiv(“left”, moveX);
else
moveDiv(“right”, moveX);
}
//判断是否是PC端
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = new Array(“Android”, “iPhone”, “SymbianOS”, “Windows Phone”, “iPad”, “iPod”);
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; }
}
return flag;
}
//PC端鼠标按下
function click() {
clickState = true;
startx = event.clientX;
starty = event.clientY;
}
//PC端鼠标移动
function pull() {
if (1 == event.which) //判断左键是否按下
{
endx = event.clientX;
endy = event.clientY;
calculationMoveCoordinate();
}
}
//PC端和移动端位移结束
function stopClick() {
if (Math.abs(moveX) > 37 && moveY < 20) {
if (moveX < 0) {
history.go(1);
} else {
history.go(-1);
}
} else {
reductionDiv(“left”);
reductionDiv(“right”);
}
}
////移动端注册事件
document.addEventListener(‘touchmove’, function (event) {
event.preventDefault();
}, false);
//touchstart事件
function touchSatrtFunc(evt) {
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等
var touch = evt.touches[0]; //获取第一个触点
startx = Number(touch.pageX); //页面触点X坐标
starty = Number(touch.pageY); //页面触点Y坐标
}
//touchmove事件,这个事件无法获取坐标
function touchMoveFunc(evt) {
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等
var touch = evt.touches[0]; //获取第一个触点
endx = Number(touch.pageX); //页面触点X坐标
endy = Number(touch.pageY); //页面触点Y坐标
calculationMoveCoordinate();
}
//touchend事件
function touchEndFunc(evt) {
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等
stopClick();
}
//加载
if (IsPC()) {
document.onmousedown = click;
document.onmousemove = pull;
document.onmouseup = stopClick;
} else {
document.addEventListener(‘touchstart’, touchSatrtFunc, false);
document.addEventListener(‘touchmove’, touchMoveFunc, false);
document.addEventListener(‘touchend’, touchEndFunc, false);
}
createDiv(‘left’);
createDiv(‘right’);
- JS实现仿UC浏览器前进后退效果
- 仿浏览器 前进 后退 刷新
- js控制浏览器前进后退
- history pushState 实现浏览器前进与后退
- iOS 仿 UC 浏览器个人中心 (下拉实现果冻效果)
- iOS 仿 UC 浏览器个人中心 (下拉实现果冻效果)
- JS实现浏览器部分自带的前进后退及刷新等功能
- JS实现浏览器部分自带的前进后退及刷新等功能
- 高仿UC浏览器弹出菜单效果
- 高仿UC浏览器弹出菜单效果
- JS 后退 刷新 前进
- 利用js代码模拟浏览器后退、前进、刷新
- 利用js代码模拟浏览器后退、前进、刷新
- JavaScript Window History 实现浏览器的 前进 后退 功能
- js实现禁用浏览器后退
- js实现禁止浏览器后退
- 【JS】:JS实现页面的刷新,后退和前进
- 浏览器前进后退的判断
- 是什么优化让 .NET Core 性能飙升?
- 第三章 活动图
- CODEV和zemax tilt反射镜建立和对比2
- [A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configur
- Git Day 1:比较修改文件的前后状态和内容
- JS实现仿UC浏览器前进后退效果
- ubuntu 设置hosts
- FAT16文件系统之总结构分析(一)
- 3ds Max插件开发(八)编写.Net Plug-ins
- session的活化和钝化
- poj3295Tautology 离散数学前缀表达式(栈+枚举)
- B.Five-In-a-Row【逻辑+模拟】
- TXT
- hibernate 解决the type java.lang.AutoCloseable can not be resolver