在使用 Clipboard.js 中学一点 JavaScript
在更新个人页面时,为方便快速复制邮箱地址,使用 Clipboard.js 一插件。之前未接触过 JavaScript,所以从零开始。 我的组合是:Bootstrap(CSS 框架)+ Clipboard.js
第一次报错:Uncaught TypeError: Illegal constructor
|
|
一开始初始化调用 Clipboard.js 就出错?回到官方文档中比对:
|
|
问题解决。一开始所参照的中文教程比较久远,语句更新为 ClipboardJS
。
第二次报错:Uncaught TypeError: Cannot read property ‘addEventListener’ of null
|
|
该语句是为了使用 DOM 选择器。
为什么在这里要使用 DOM 选择器(DOM SELECTOR)
为了在页面上快速找到引号内(在此为.btn
)元素,然后进行下一步。报错原因:调用 JavaScript 时,DOM 选择器还没有渲染完。反映为在使用 DOM 选择器时,没找到或没找完该元素。在我的页面中,因为一开始把<script></script>
都放在<head>
标签之内,所以在<body>
没渲染之前就加载了 DOM 选择器,当然什么都找不到了。
问题解决:把该段 JS 放到到本来调用 Clipboard.js 那一段之后。
第三次报错:.tooltip() is not a function
在正常调用 Clipboard.js 后,希望在点击复制后弹出复制成功或失败的提示语,而且 Bootstrap 集成了类似的 Tooltip.js 插件。在官方文档中找到相关代码:
|
|
为了监听是否触发自定义事件,也就是获得用户是否成功复制内容的反馈,加载了这一段代码进行监听。如果成功,则回复 success,失败回复 error。结合 Tooltip.js 的教程,可以直接改为:
|
|
在对应的按钮加入标签即可。但报错找不到 tooltip 的函数。应该还是加载问题。
问题解决:Tooltip.js 依赖 jQuery,需要先调用 jQuery 再调用 tooltip.js(也就是 bootstrap.min.js),在<head>
内将调用 jquery.js 一行置于 bootstrap.min.js 之前。
到底学了什么?
- 注意渲染顺序。
- 注意版本更新。