marked在vue项目中改变超链接跳转方式和图片放大预览

这篇具有很好参考价值的文章主要介绍了marked在vue项目中改变超链接跳转方式和图片放大预览。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

marked在vue项目中改变超链接跳转方式和图片放大预览

这里我是另起一个js文件对marked的配置做了修改,参考如下

import marked from 'marked'
let renderer = new marked.Renderer()
const linkRenderer = renderer.link
const imgRenderer = renderer.image
// 超链接使用新窗口打开
renderer.link = (href, title, text) => {
    const html = linkRenderer.call(renderer, href, title, text)
    return html.replace(/^<a /, '<a target="_blank" ')
}

// marked解析过程中解析到图片的回调,为每个img标签绑定点击事件,并传递当前事件以及href图片链接
renderer.image = function (href, title, text) {
    const img = imgRenderer.call(renderer, href, title, text)
    // 在图片元素上添加点击事件处理函数
    return `<img width="800" height="500" οnclick="showMarkedImage('${href}')" src="${href}" alt="${text}" title="${title ? title : ''
        }">`
}
marked.setOptions({
    renderer,
    sanitize: false
})

export default marked

然后在vue文件中进行进行该文件的引用

// vue结构
<div class="show-inputText" v-html="markedContent(form.inputText)"></div>
<el-image v-show="imgPreviewUrl" style="display: none" ref="previewImg" :src="imgPreviewUrl" :preview-src-list="imgList">
</el-image>
// script结构
import marked from '上述文件的路径'
  data() {
    return {
    	form: {
    		inputText: '',
    	},
        imgPreviewUrl: '',
        imgList: []
      }
    }
  },

最后格式化markdown文本文章来源地址https://www.toymoban.com/news/detail-670848.html

init() {
	// 获取markdown文本中所有的图片链接
     this.getImgList(item.inputText)
     // markdown图片放大预览
     let _this = this
     window.showMarkedImage = function (url) {
       _this.imgPreviewUrl = url
       _this.$nextTick(() => {
         _this.$refs.previewImg.showViewer = true
         // 需要把当前的图片放到最前面,后面排序
         let copyImgList = [..._this.imgList]
         let targetUrlIndex = copyImgList.findIndex(item => item == url)
         copyImgList.splice(targetUrlIndex, 1)
         let res = [url, ...copyImgList]
         _this.$refs.previewImg.previewSrcList = res
         _this.$refs.previewImg.src = url
       }, 200)
  },
   // 获取图片
  getImgList(inputText) {
    // 匹配markdown文案中所有的图片,以便后续放大预览
    const regex = /!\[Image\]\((.*?)\)/g
    const matches = inputText.match(regex)
    let res = []
    if (matches) {
      for (const match of matches) {
        const imageUrl = match.match(/\((.*?)\)/)[1]
        res.push(imageUrl)
      }
    }
    this.imgList = res
  },
  // markdown格式化
  markedContent(markdownContent) {
    let mak = marked.marked(markdownContent)
    if (mak.substr(-1) == '\n') {
      mak = mak.slice(0, -1)
    }
    return mak
  },

到了这里,关于marked在vue项目中改变超链接跳转方式和图片放大预览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue列表中小图片放大实现

    方式1: 使用element-ui组件库中自带的组件直接进行放大。鼠标移动到其上时,会有单击放大的文字提示。 css部分,就是小盒子和点击之后的大盒子的css样式 方式二: 用别人已经写好的轮子,也会比自己写的更加美观,就比如说:使用 v-viewer 组件 第一步,安装 javascript npm

    2024年02月12日
    浏览(44)
  • VUE跳转外部链接和网页的方法

    1、有时我们在轮播图中会遇到点击图片进项跳转到第三方网站 2、或者拿到后端返回的url中要进行跳转 直接使用 1.window.location.href = 链接地址 2.window.open(a,b) a:外部链接 ,b:打开方式(“_blank”新开一个窗口;“_self”覆盖当前窗口) 但是我们发现这样打开有时会出现一个很大

    2024年02月11日
    浏览(45)
  • Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

    前言 其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动的事件,然后根据上滚还是下滚实现图片的缩放。 效果: 注:该配图使用《漫画|有趣的了解一下赋值、深浅拷贝》文章图片,不存在侵权问题。 实现思路 在js中,onmousewheel是鼠标滑轮滚动事件,可以通过

    2024年02月01日
    浏览(66)
  • vue点击单张图片放大(纯js)

    vue点击单张图片放大 点击图片以后-》 在 vue 项目中,实现点击图片放大功能可以使用图片预览组件,如 vue-preview,或者使用 JavaScript 编写放大预览的代码。 步骤如下: 在 HTML 中加入图片元素,并给其绑定 click 事件。 在 vue 组件的 methods 选项中,定义图片点击事件的回调函

    2024年02月12日
    浏览(57)
  • Vue3 实现产品图片放大器

    Vue3 实现类似淘宝、京东产品详情图片放大器功能 环境:vue3+ts+vite 1.创建picShow.vue组件 2.在其他页面引用组件picShow.vue 效果:

    2024年02月14日
    浏览(51)
  • vue实现 图片拖拽及鼠标滚轮放大缩小

    效果: 代码实现

    2024年02月14日
    浏览(83)
  • vue3 图片放大缩小、拖拽功能(自定义指令)

    效果 自定义 拖拽指令 vDrag.js 参考来源 https://github.com/sunzsh 使用 自定义 拖拽指令 写法二 (带传参及回调写法) vDrag.js 使用 自定义 缩放指令 vWheelScale.js 根据项目需要 我指令加了 动态参数 及 回调函数 不需要自行修改 使用 自定义 缩放指令 写法二(带传参及回调写法)

    2024年02月01日
    浏览(60)
  • 使用vue+element ui图片放大预览遮盖层异常

    使用element一个图片放大预览遮盖层只挡了一部分,如图 错误代码

    2024年02月16日
    浏览(57)
  • vue 图片点击放大查看大图(element-ui与vant)

    未放大效果: 点击放大后的效果: html: js: html: js:

    2024年02月08日
    浏览(53)
  • vue 实现图片以鼠标为中心放大,并可以随意在div内拖动

    需求:前端接收后端传过来图片渲染,并且可以直接在渲染的地方,以鼠标滚轮为中心放大图片,还可以随意拖动图片 调研:目前有很多现成的插件都是,点击图片,然后弹出遮罩层,在遮罩层里面操作,由于不符合需求,就只能自己写了。 开始使用了css3 的scale ,但是发现

    2024年02月10日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包