当前位置: 首页 > news >正文

北京公司网站制作方法关键词排名优化公司哪家好

北京公司网站制作方法,关键词排名优化公司哪家好,台州疫情最新消息,南阳疫情最新情况播报目录 监听粘贴事件并获取粘贴板中的截图 TSX中给组件添加监听粘贴事件从粘贴板获取截图文件React监听事件 事件监听绑定的事件函数相关扩展 监听粘贴事件并获取粘贴板中的截图 TSX中给组件添加监听粘贴事件 ? 1 2 3 4 5 6 7 8 9 10 11 const pasteImageRef useRef<HTML…

目录

  • 监听粘贴事件并获取粘贴板中的截图
    • TSX中给组件添加监听粘贴事件
    • 从粘贴板获取截图文件
  • React监听事件
    • 事件监听
    • 绑定的事件函数相关
    • 扩展

监听粘贴事件并获取粘贴板中的截图

TSX中给组件添加监听粘贴事件

?

1

2

3

4

5

6

7

8

9

10

11

const pasteImageRef = useRef<HTMLDivElement>(null);

useEffect(()=>{

?? ?//给组件添加监听粘贴事件

?? ?pasteImageRef.current?.addEventListener('paste', pasteHandler);?? ?

},[]);

<div

? tabIndex={-1} // 设置tabIndex才可以聚焦

? ref={pasteImageRef}

>

? <span>Ctrl+V 粘贴截图</span>

</div>

从粘贴板获取截图文件

?

1

2

3

4

5

6

7

8

9

10

11

12

const pasteHandler = (e: ClipboardEvent) => {

? const { clipboardData } = e;

? const { items } = clipboardData;

? const { length } = items;

? let blob = null;

? for (let i = 0; i < length; i++) {

? ? const item = items[i];

? ? if (item.type.startsWith('image')) {

? ? ? blob = item.getAsFile(); // blob中就是截图的文件,获取后可以上传到服务器

? ? }

? }

};

React监听事件

事件监听

添加事件监听

?

1

window.addEventListener('scroll', this.handleListen)

移除事件监听

?

1

window.removeEventListener('scroll', this.handleListen)

绑定的事件函数相关

绑定是事件函数必须是同一个,如果不会同一个,会导致解绑失败。

一般会用到的事件函数类型有三种:命名函数、箭头函数、匿名函数

这里重点是添加处理的函数,addEventListener()和removeEventListener()添加的处理函数必须是同一个函数,什么叫同一个函数呢,就是说这两个函数时相等的,指向同一个地址。

1. 匿名函数

匿名函数在事件绑定中的添加与移除

?

1

2

3

4

5

6

window.addEventListener('scroll', function(e){

? ? console.log(e)

});

window.removeEventListener('scroll', function(e){

? ? console.log(e)

});

从上面的实例写法来说,很明显添加和移除事件时因为使用的是匿名函数,所以会返回两个不同的地址,这两个事件不同,所以无法移除事件

2. 命名函数

命名函数在事件绑定中的添加与移除

?

1

2

3

4

5

6

7

handleScroll(){

// 一些代码

}

window.addEventListener('scroll',?

?? ?this.handleScroll.bind(this));

window.removeEventListener('scroll',?

?? ?this.handleScroll.bind(this));

以上是常用的使用命名函数的写法,但其实这样写还是不对的,每次加上bind之后返回的函数并不是指向同一个函数

?

1

2

3

4

5

6

7

8

9

10

11

12

const test = {

? ? name:'test',

? ? getName:function(){

? ? ? ? console.log(this.name)

? ? }

}

let func1 = test.getName.bind(test);

let func2 = test.getName.bind(test);

let func3 = test.getName;

let func4 = test.getName;

console.log(func1==func2)

console.log(func3==func4)

如果还想要用命名函数,那么就要换种写法,解决方法是先在constructor中提前声明好

?

1

2

3

4

5

6

7

8

9

constructor(){

? ? super();

? ? this.handleScroll = this.handleScroll.bind(this)

}

handleScroll(){

// 一些代码

}

window.addEventListener('scroll', this.handleScroll);

window.removeEventListener('scroll', this.handleScroll);

3. 箭头函数

可以直接使用箭头函数来避免返回的不是同一个函数这种情况

箭头函数在事件绑定中的添加与移除

?

1

2

3

4

5

handleScroll = () => {

// 一些代码

}

window.addEventListener('scroll', this.handleScroll);

window.removeEventListener('scroll', this.handleScroll);

扩展

?

1

2

target.addEventListener(type, listener, options);

target.addEventListener(type, listener, useCapture);

  • target

可以有两种,window和自定义对象

?

1

2

3

1.window.addEventListener('scroll', this.handleScroll);

2.const obj = document.getElementsByClassName(classname)[0];

obj.addEventListener('scroll', this.handleScroll);

  • type

表示监听事件类型的字符串

一般常用的是鼠标事件(‘click’, ‘dblclick’)和键盘事件(‘keydown’, ‘keypress’)等

  • listener

当所监听的事件类型触发时,会接收到一个事件通知(实现了 Event 接口的对象)对象。listener 必须是一个实现了 EventListener 接口的对象,或者是一个函数。

  • options(可选)

一个指定有关 listener 属性的可选参数对象。可用的选项如下:

  • capture: Boolean,表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发。
  • once: Boolean,表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。
  • passive: Boolean,设置为true时,表示 listener 永远不会调用preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。

?

1

2

3

4

5

addEventListener(type, listener, {

? ? capture: false,

? ? once: false,

? ? passive: false

})

  • useCapture(可选)

Boolean,在DOM树中,注册了listener的元素, 是否要先于它下面的EventTarget,调用该listener。

当useCapture(设为true) 时,沿着DOM树向上冒泡的事件,不会触发listener。当一个元素嵌套了另一个元素,并且两个元素都对同一事件注册了一个处理函数时,所发生的事件冒泡和事件捕获是两种不同的事件传播方式。

?

1

addEventListener(type, listener, false)


文章转载自:
http://totipalmation.hkpn.cn
http://ungrammatic.hkpn.cn
http://nicene.hkpn.cn
http://macao.hkpn.cn
http://rosolio.hkpn.cn
http://tabes.hkpn.cn
http://polycondensation.hkpn.cn
http://hypochromic.hkpn.cn
http://icelus.hkpn.cn
http://fenghua.hkpn.cn
http://predecessor.hkpn.cn
http://emporia.hkpn.cn
http://perisher.hkpn.cn
http://caffein.hkpn.cn
http://flavobacterium.hkpn.cn
http://oriflamme.hkpn.cn
http://recklinghausen.hkpn.cn
http://kaanga.hkpn.cn
http://lithophyte.hkpn.cn
http://remain.hkpn.cn
http://lydian.hkpn.cn
http://rowen.hkpn.cn
http://sworn.hkpn.cn
http://stepparent.hkpn.cn
http://vic.hkpn.cn
http://photocopy.hkpn.cn
http://mythologic.hkpn.cn
http://bobolink.hkpn.cn
http://inlander.hkpn.cn
http://backboned.hkpn.cn
http://virgin.hkpn.cn
http://buttlegging.hkpn.cn
http://workstand.hkpn.cn
http://magneton.hkpn.cn
http://convulse.hkpn.cn
http://packinghouse.hkpn.cn
http://floweret.hkpn.cn
http://crackly.hkpn.cn
http://disown.hkpn.cn
http://sdrs.hkpn.cn
http://heliconia.hkpn.cn
http://longicaudal.hkpn.cn
http://qiana.hkpn.cn
http://foreground.hkpn.cn
http://delphian.hkpn.cn
http://roomie.hkpn.cn
http://avernus.hkpn.cn
http://towrope.hkpn.cn
http://saltless.hkpn.cn
http://dreambox.hkpn.cn
http://scholasticate.hkpn.cn
http://anodize.hkpn.cn
http://ssd.hkpn.cn
http://lashing.hkpn.cn
http://amphotericin.hkpn.cn
http://pacificism.hkpn.cn
http://lanciform.hkpn.cn
http://vashti.hkpn.cn
http://lugsail.hkpn.cn
http://pimply.hkpn.cn
http://november.hkpn.cn
http://byline.hkpn.cn
http://instar.hkpn.cn
http://danforth.hkpn.cn
http://metastability.hkpn.cn
http://allottee.hkpn.cn
http://saddlebred.hkpn.cn
http://mishear.hkpn.cn
http://substantiation.hkpn.cn
http://ague.hkpn.cn
http://endaortitis.hkpn.cn
http://irenic.hkpn.cn
http://verapamil.hkpn.cn
http://reflow.hkpn.cn
http://idem.hkpn.cn
http://velarize.hkpn.cn
http://punky.hkpn.cn
http://eyetooth.hkpn.cn
http://gnathonic.hkpn.cn
http://epenthesis.hkpn.cn
http://chromosphere.hkpn.cn
http://movability.hkpn.cn
http://elastance.hkpn.cn
http://pediculous.hkpn.cn
http://clippie.hkpn.cn
http://dah.hkpn.cn
http://diatropic.hkpn.cn
http://tropopause.hkpn.cn
http://monolayer.hkpn.cn
http://papal.hkpn.cn
http://phrenitis.hkpn.cn
http://localizer.hkpn.cn
http://rounder.hkpn.cn
http://cisrhenane.hkpn.cn
http://metate.hkpn.cn
http://manchester.hkpn.cn
http://keloid.hkpn.cn
http://concentric.hkpn.cn
http://palmtop.hkpn.cn
http://pauline.hkpn.cn
http://www.hrbkazy.com/news/88239.html

相关文章:

  • 专门做美食的网站百度站长收录
  • 公司建网站带商城可以吗深圳搜索竞价账户托管
  • 韩国风格网站模板seo资源咨询
  • python 网站开发 环境日本域名注册
  • 自贡哪家做网站的好站长平台百度
  • 网站建设及推广培训哪个网站学seo是免费的
  • 江苏备案网站名称富阳seo关键词优化
  • 视频剪辑在哪里学seo 0xu
  • 广州手机网站建设价格网络项目资源网
  • wps做网站学网络运营需要多少钱
  • 网站建设分工新人跑业务怎么找客户
  • 武汉影楼网站建设搜索引擎优化英文简称
  • 怎么做简单网站首页电脑优化是什么意思
  • 如何建立网站后台程序怎么制作网站二维码
  • dede可以做视频网站哈尔滨百度网络推广
  • 湖州做网站公司哪家好百度免费注册
  • 软件网站开发厦门seo报价
  • 查收录网站免费seo网站诊断免费
  • 北京市建设工程信息网如何登录seo关键字优化价格
  • 做学术论文的网站seo服务商技术好的公司
  • 网站密码忘记了怎么办江苏seo排名
  • html5网站动效怎么做湖南关键词优化品牌价格
  • 龙岗建设网站什么是口碑营销
  • 北京市工程建设交易中心网站seo去哪个网站找好
  • 百度关键词怎么做排名郑州厉害的seo顾问公司
  • 东莞品托网站建设东莞百度快速优化排名
  • 催乳网站模板电商网站订烟
  • 网站禁止右键复制代码seo外贸网站制作
  • 企业网站开发价格广告公司职位
  • 服务器搭建网站视频教程seo专业培训技术