java跳跳球代码,GitHub - libin1991/libin_Blog: 爬虫-博客大全

小程序历史栈最多只支持10层

当小程序业务比较复杂时,就很容易超过10层。

当超过10层后,有的机型是点击无反应,有的机型会出现一些未知错误

移动端关闭虚拟键盘

document.activeElement.blur();

正则表达式匹配版本

"Mozilla/5.0 (Linux; Android 6.0.1; MI NOTE LTE Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 Mobile Safari/537.36 Weibo (Xiaomi-MI NOTE LTE__weibo__8.5.3__android__android6.0.1)".match(/(__weibo__)([\d.]*)(__android|__iphone)/)[2]

"8.5.3"

// 解决键盘弹出后挡表单的问题

window.addEventListener('resize', function() {

if(

document.activeElement.tagName === 'INPUT' ||

document.activeElement.tagName === 'TEXTAREA'

) {

window.setTimeout(function() {

if('scrollIntoView' in document.activeElement) {

document.activeElement.scrollIntoView();

} else {

document.activeElement.scrollIntoViewIfNeeded();

}

}, 0);

}

});

转载自:

cf85410a24b042212fbbd8a96074de26.png

CSS预加载:

156a9d2539ab4cceefa2c02777d1b0f7.png

面试

var head = document.getElementsByTagName('head')[0] || document.body;

function loadJsModule(url) {

var script = document.createElement('script');

script.charset = 'utf-8';

script.type = 'text/javascript';

script.onload = script.onreadystatechange = function() {

if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {

/*

* 加载逻辑, callback为define的回调函数, args为所有依赖模块的数组

* callback.apply(window, args);

*/

script.onload = script.onreadystatechange = null;

}

};

}

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

Webpack

面试

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

Webpack

面试

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

Webpack

面试

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

Webpack

面试

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

Webpack

面试

周末读fastclick.js源码有感 在touchend合成一个事件立即触发解决300ms问题

fastclick是将事件绑定到你传的元素(一般是document.body)

② 在touchstart和touchend后(会手动获取当前点击el),如果是类click事件便手动触发了dom元素的click事件

所以click事件在touchend便被触发,整个响应速度就起来了,触发实际与zepto tap一样

既然浏览器有这300ms的延迟,那么我们来代替浏览器判断,手动触发click事件,这也是fastClick的解决方案。

// 自定义事件

var eve = new Event('自定义事件名');

el.addEventListener('自定义事件名', function(){

console.log('自定义事件')

});

el.dispatchEvent(eve);

//

fastClick的核心代码

FastClick.prototype.onTouchEnd = function(event){

// 一些状态监测代码

// 从这里开始,

if (!this.needsClick(targetElement)) {

// 如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click

event.preventDefault();

// 触发一次模拟的click

this.sendClick(targetElement, event);

}

}

这里可以看到,FastClick在touchEnd的时候,在符合条件的情况下,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件。

我们来看看他是怎么模拟click事件的

FastClick.prototype.sendClick = function(targetElement, event) {

// 这里是一些状态检查逻辑

// 创建一个鼠标事件

clickEvent = document.createEvent('MouseEvents');

// 初始化鼠标事件为click事件

clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);

// fastclick的内部变量,用来识别click事件是原生还是模拟

clickEvent.forwardedTouchEvent = true;

// 在目标元素上触发该鼠标事件,

targetElement.dispatchEvent(clickEvent);

我们在网上搜索fastClick,大部分都在说他解决了zepto的点击穿透问题,他是怎么解决的呢?就是上面最后一句,他模拟的click事件是在touchEnd获取的真实元素上触发的,而不是通过坐标计算出来的元素。

【当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!】

React:

Vue:

JS必知必会

性能监控:

面试:

CSS:

水墨寒的博客 你不知道的CSS

跨域:

PWA:

Vue:

React:

Node:

Webpack:

工具:

LESS:

HTTP:

小程序:

函数式:

算法:

Async/Await

canvas:

Loading:

插件:

源码:

KOA:

SVG,canvas:

MAC工具:

Vue源码学习:

播放器:

工具:

面试:

parcel:

Canvas:

Native:

你不知道的javaScript:

CSS奇巧淫技:

Webpack

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值