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

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文本

init() {// 获取markdown文本中所有的图片链接this.getImgList(item.inputText)// markdown图片放大预览let _this = thiswindow.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\]\((.*?)\)/gconst 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项目中改变超链接跳转方式和图片放大预览

marked在vue项目中改变超链接跳转方式和图片放大预览 这里我是另起一个js文件对marked的配置做了修改&#xff0c;参考如下 import marked from marked let renderer new marked.Renderer() const linkRenderer renderer.link const imgRenderer renderer.image // 超链接…...

leetcode485. 最大连续 1 的个数

思路&#xff1a;【双指针】 left左边界&#xff0c;right往右跑遇到0&#xff0c;则计算该长度。并更新cnt&#xff08;最大连续1个数&#xff09;。 class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int left 0, right 0;int cnt 0;…...

linux 源代码编译

源代码编译 有时候会在linux上下载源码包&#xff0c;然后进行编译成可执行的文件&#xff0c;这个过程需要经过configure、make、make install、make clean四个步骤 configure 为这个程序在当前的操作系统环境下选择合适的编译器和环境参数来编译该代码 make 对程序代码进行编…...

C语言日常刷题 1

文章目录 题目答案与解析1234.5.6. 题目 1、执行下面程序&#xff0c;正确的输出是&#xff08; &#xff09; int x5,y7; void swap() { int z; zx; xy; yz; } int main() { int x3,y8; swap(); printf(“%d,%d\n”&#xff0c;x, y); return 0; } A: 5,7 B: 7,5 C: 3,8 D: 8…...

es和数据库同步方案

5.5 课程信息索引同步 5.5.1 技术方案 通过向索引中添加课程信息最终实现了课程的搜索&#xff0c;我们发现课程信息是先保存在关系数据库中&#xff0c;而后再写入索引&#xff0c;这个过程是将关系数据中的数据同步到elasticsearch索引中的过程&#xff0c;可以简单成为索引…...

手机NFC功能是什么?

手机NFC功能是什么&#xff1f; 随着智能手机的不断发展和普及&#xff0c;NFC(近场通讯)功能已经成为了我们生活中不可或缺的一部分。NFC是一种无线通信技术&#xff0c;可以让手机和其他设备之间进行快速的数据交换和支付操作。那么&#xff0c;手机NFC功能是什么&#xff1…...

零拷贝技术详解

当涉及到网络编程和IO操作时&#xff0c;数据拷贝是一个常见的性能瓶颈。传统的数据拷贝过程中&#xff0c;数据需要从内核缓冲区复制到用户空间缓冲区&#xff0c;然后再从用户空间缓冲区复制到内核缓冲区&#xff0c;这个过程会耗费大量的CPU时间和内存带宽&#xff0c;降低系…...

【VS Code插件开发】消息通信(四)

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域优质作者、阿里云专家博主&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4e2; 资料领取&#xff1a;前端…...

开源硬件:下一个技术革命?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

开发一个npm组件包

vue项目初始化 vue create mytest 启动项目以后 组件开发 开发的组件写在 package中 如下如例 开发一个 listpage的组件 里面放了一个a链接注册组件配置打包 "package": "vue-cli-service build --target lib ./src/package/index.js --name managerpage -…...

有限与无限游戏 | 真北荐书

2023佛山敏捷之旅暨DevOps Meetup志愿者为进行大会的组织与准备&#xff0c;每周三晚有一个例会。 例会前等人的时间&#xff0c;涌现出一个小的分享环节。今天分享这本书&#xff1a;《有限与无限游戏》。 大家选择成为志愿者&#xff0c;是一个无限游戏。而组织活动和完成各种…...

网络安全(黑客)自学剖析

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

Leetcode每日一题:1267. 统计参与通信的服务器

原题 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff0c;我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其…...

HarmonyOS开发:超详细了解项目的工程结构

前言 系列文章目录&#xff1a; HarmonyOS开发第一步&#xff0c;熟知开发工具DevEco Studio 当我们熟练的掌握了DevEco Studio之后&#xff0c;就可以创建项目进行练习了&#xff0c;和市场上大多数IDE一样&#xff0c;DevEco Studio也给我们提供了很多的实例模板&#xff0c…...

HTML基础知识点

目录 ​编辑一、使用 vscode 二、研究代码的特点 三、HTML 常见标签 注释标签 标题标签 段落标签 换行标签 格式化标签 图片标签 超链接标签 表格标签 列表标签 表单标签&#xff1a; form 标签 input标签&#xff1a; select textarea标签&#xff1a; 无语…...

基于CBAM-CNN卷积神经网络预测研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

iOS开发Swift-基本运算符

1.一元、二元、三元运算符 一元单一操作对象-a !b c!二元两个操作对象2 3三元三目运算符a ? b : c 2.赋值运算符() let a 10 var b 5 b a let (x, y) (1, 2)赋值运算符不返回任何值&#xff0c;所以 if x y { ... } 无效。 3.算术运算符 - * / 默认不允许数…...

Flink java 工具类

flink 环境构建工具类 public class ExecutionEnvUtil {/*** 从配置文件中读取配置(生效优先级&#xff1a;配置文件<命令行参数<系统参数&#xff09;** param args* return org.apache.flink.api.java.utils.ParameterTool* date 2023/8/4 - 10:05 AM*/public static …...

2023年你需要知道的最佳预算Wi-Fi路由器清单

买新路由器?让我们帮助你挑选一些既有很多功能和性能,又经济实惠的产品。 购买Wi-Fi路由器并不一定要倾家荡产,尤其是如果你不需要一个提供数百Mbps速度的路由器。廉价路由器是一个很好的选择,它包含了许多功能,不会对钱包造成影响。 一、2023年在廉价Wi-Fi路由器中寻找…...

Go语言基础之流程控制

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分&#xff0c;流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有if和for&#xff0c;而switch和goto主要是为了简化代码、降低重复代码而生的结构&#xff0c;属于扩展类的流程控制。 if else(分支结构…...

Linux服务器上Ollama离线安装全攻略(附systemd服务配置)

Linux服务器上Ollama离线安装全攻略&#xff08;附systemd服务配置&#xff09; 在企业内网或实验室环境中&#xff0c;离线部署AI工具往往面临诸多挑战。本文将手把手带你完成Ollama在Linux服务器上的完整离线安装流程&#xff0c;特别针对无外网访问权限的场景优化&#xff0…...

球机器人研究报告【202600001】

文章目录球机器人研究报告综合分析多智能体推箱子训练&#xff08;第100代/第300代&#xff09;一、意识流分析&#xff08;神经网络脉冲活动&#xff09;1. 热图&#xff08;consciousness_agent2_gen100_ep0_heatmap.png&#xff09;2. PCA&#xff08;主成分分析&#xff0c…...

【等保三级Java系统合规落地指南】:20年安全架构师亲授7大关键改造步骤与避坑清单

第一章&#xff1a;等保三级Java系统合规落地的顶层认知与法律依据等保三级&#xff08;GB/T 22239–2019《信息安全技术 网络安全等级保护基本要求》&#xff09;并非单纯的技术加固任务&#xff0c;而是覆盖组织管理、制度建设、技术实施与持续运营的全生命周期合规工程。对J…...

研发物料管理新思路:巧用SAP预留功能实现打样耗材精准管控

研发物料管理新思路&#xff1a;巧用SAP预留功能实现打样耗材精准管控 在制造业研发部门&#xff0c;物料管理一直是令人头疼的难题。不同于生产线的标准化流程&#xff0c;研发活动往往伴随着频繁的设计变更、小批量试制和突发性物料需求。传统的手工台账或Excel表格管理方式&…...

HarmonyOS6 半年磨一剑 - RcCheckbox 实战下篇:问卷调查表单与参数使用指南

文章目录前言一、场景&#xff1a;问卷调查表单1.1 需求分析1.2 数据结构设计1.3 表单校验联动1.4 第三题&#xff1a;计数器与数量限制的配合1.5 结果页与状态重置1.6 三道题的样式差异化对比1.7 完整代码二、参数使用频率参考2.1 高频参数&#xff08;必须掌握&#xff09;2.…...

TIA Portal精智面板动画外观实战:从基础图形到变量控制

1. 精智面板动画外观入门指南 第一次接触TIA Portal的精智面板动画功能时&#xff0c;我被它强大的可视化能力惊艳到了。简单拖拽几个图形&#xff0c;关联PLC变量&#xff0c;就能实现酷炫的工业界面效果。下面我就用最直白的语言&#xff0c;带大家从零开始玩转这个功能。 首…...

气象防灾实战:如何用QGIS快速生成暴雨等值面预警图?(含历史数据对比)

气象防灾实战&#xff1a;如何用QGIS快速生成暴雨等值面预警图&#xff1f;&#xff08;含历史数据对比&#xff09; 暴雨灾害的预警与防控一直是应急管理和市政规划领域的核心挑战。传统的气象数据分析往往依赖专业软件和复杂代码&#xff0c;让非技术背景的从业者望而却步。本…...

Legacy iOS Kit终极指南:轻松完成旧款iOS设备降级与恢复

Legacy iOS Kit终极指南&#xff1a;轻松完成旧款iOS设备降级与恢复 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit Lega…...

ZFAKA发卡网搭建避坑实录:从YAF扩展安装到目录权限,我踩过的雷你别再踩了(Linux环境)

ZFAKA发卡网Linux搭建实战&#xff1a;关键问题解析与深度排雷指南 第一次在Linux上部署ZFAKA时&#xff0c;我本以为按照教程半小时就能搞定&#xff0c;结果却花了整整两天时间与各种报错信息搏斗。从YAF扩展的诡异报错到目录权限引发的连锁反应&#xff0c;每个环节都暗藏杀…...

Realistic Vision V5.1镜像免配置部署教程:Docker+本地模型路径自动校验

Realistic Vision V5.1镜像免配置部署教程&#xff1a;Docker本地模型路径自动校验 1. 项目概述 Realistic Vision V5.1虚拟摄影棚是基于Stable Diffusion 1.5生态顶级写实模型开发的本地化工具&#xff0c;专为追求摄影级人像效果的用户设计。这个解决方案通过Docker容器化技…...