微信小程序_实现markdown支持代码复制功能

这篇具有很好参考价值的文章主要介绍了微信小程序_实现markdown支持代码复制功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

⭐ 前言

大家好,我是yma16,不止前端,本文将介绍微信小程序中 markdown的代码复制功能实现。
往期微信小程序文章
小程序自定义微信昵称和头像
小程序制作markdown博客
小程序结合chatgpt制作聊天页面
小程序组件传值
小程序复制到粘贴板的功能实现

⭐ 复制代码功能实现

基于towxml渲染markdown 定位

因为是基于towxml渲染的markdown
通过渲染元素快速定位代码块 code 的位置
markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript
通过选择元素,可找到class 名称h2w__viewParent即为渲染代码块的元素布局。

h2w__code language-css 类名下是渲染的代码块

定位元素的代码块渲染class
markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript

查找样式的判断源码

通过new mardown的过程我们找到class是通过attr的class注入

markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript

attr注入属性用来判断是否是代码块 code

区分的标志:tag是否为code使用includes判断
e.tag.includes(‘code’)

// 代码块判断
if(e.tag.includes('code')||item.name.includes('code')||attrs.class.includes('code')){
   attrs.isCodeBlock=true
   attrs.element=e
}
复制代码样式及事件绑定

样式

<view 
wx:if="{{item.attrs.isCodeBlock}}" 
bindtap="cloneCode" 
data-code="{{item}}" 
data-attr-data="{{item.attrs.data}}" 
style="float: right;position: relative;top:-20px;user-select: none;">
复制代码
</view>

事件绑定

cloneCode(e) {
			const { code } = e.target.dataset
			const { attrs } = code
			const { element } = attrs
			const { child } = element
			let lineCount = 0
			const getCodeFormat = (array) => {
				let text = ''
				array.forEach(item => {
					if (item.tag && item.tag.includes('ul')) {
						// 多少行判断
						lineCount = item.child.length
					}
					else if (item.tag && item.tag.includes('span')) {
						// 子集的text 递归回去
						text += getCodeFormat(item.child)
					}
					else if (item.tag && item.tag.includes('br')) {
						// 换行标志
						text += '\n'
					}
					else if (item.text) {
						// 文字
						text += item.text
					}

				})
				return text
			}
			let content = getCodeFormat(child)
			wx.setClipboardData({
				data: content
			})
			wx.getClipboardData({
				success: (option) => {
					console.log(option)
				},
			})
		}
效果

复制打印测试和代码块一样,完全ok!
markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript
复制成功!
markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript

⭐ 结束

欢迎阅读,祝你生活愉快!
markdown代码块复制,微信小程序_原生,微信小程序,小程序,javascript文章来源地址https://www.toymoban.com/news/detail-611068.html

到了这里,关于微信小程序_实现markdown支持代码复制功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包