Vue2+JS项目升级为Vue3+TS之jquery的maphilight引入项目(附使用)

news2024/9/24 9:26:43

        本人由于想提升自己的项目开发能力,所以将就项目的vue2+JavaScript+webpack的旧技术栈升级为vue3+typescript+vite的技术栈,所以遇到很多坑,以下是maphilight的解决方法。

        众所周知jquery是基于JavaScript进行开发,但是已有typescript版本,所以直接引入即可用jQuery包里的方法,但是!jQuery包里不自带maphilight版本,而且!maphilight没有typescript版本,只有JavaScript版本,不仅要手动引入而且要想办法在typescript的项目中使用。

所以如果只单纯的引入maphighlight的包,就会让$可以使用,但是maphilight会被识别为不是个方法,搜索了一堆网上解决办法,并把GPT干熄火了都没解决,故通过github社区进行解决。

在typescript用JavaScript引入的包,简单粗暴,直接在index.html引入js文件即可全局使用,但是typescript会报类型问题,怎么解决呢,通过全局申明即可解决,故完成!

    <script src="/node_modules/jquery/dist/jquery.min.js"></script>
    <script src="/node_modules/jquery/dist/jquery.maphilight.js"></script>


declare const $: any;
declare const maphilight: any;

以下为使用教程

定义热区区域 

    <img src="@/assets/TSG4106AImage/experimentFirst.png" ref="mapAll" id="mapAll" usemap="#image-map">
    <map name="image-map">
      <area v-for="(area, index) in allHotspots" :key="index" :id="area.id.toString()" :title="area.title" :coords="area.coords" :shape="area.shape" @click="handleClick(area)" :class="{ 'disabled': !area.clickable }">
    </map>

 定义热区数组

interface Hotspot {
  id: number;
  title: string;
  coords: string;
  shape: 'circle' | 'rect';
  clickable: boolean;
}

const allHotspots = ref<Hotspot[]>([
  { id: 1, title: 'ONOFF', coords: '141,129,29', shape: 'circle', clickable: false },
  { id: 2, title: 'Freq', coords: '1078,113,25', shape: 'circle', clickable: false },
  { id: 3, title: '0', coords: '859,490,18', shape: 'circle', clickable: false },
  { id: 4, title: '1', coords: '859,427,19', shape: 'circle', clickable: false },
  { id: 5, title: '2', coords: '929,428,19', shape: 'circle', clickable: false },
  { id: 6, title: '3', coords: '998,426,19', shape: 'circle', clickable: false },
  { id: 7, title: '4', coords: '859,365,18', shape: 'circle', clickable: false },
  { id: 8, title: '5', coords: '929,364,18', shape: 'circle', clickable: false },
  { id: 9, title: '6', coords: '998,364,21', shape: 'circle', clickable: false },
  { id: 10, title: '7', coords: '858,301,18', shape: 'circle', clickable: false },
  { id: 11, title: '8', coords: '928,302,18', shape: 'circle', clickable: false },
  { id: 12, title: '9', coords: '1000,303,18', shape: 'circle', clickable: false },
  { id: 13, title: '.', coords: '930,490,18', shape: 'circle', clickable: false },
  { id: 14, title: '-', coords: '999,490,18', shape: 'circle', clickable: false },
  { id: 15, title: 'Mμ', coords: '1079,366,24', shape: 'circle', clickable: false },
  { id: 16, title: 'Gn', coords: '1078,303,24', shape: 'circle', clickable: false },
  { id: 17, title: 'km', coords: '1079,427,23', shape: 'circle', clickable: false },
  { id: 18, title: 'Ampt', coords: '1079,175,24', shape: 'circle', clickable: false },
  { id: 19, title: 'ModONOFF', coords: '998,237,25', shape: 'circle', clickable: false },
  { id: 20, title: 'RFONOFF', coords: '140,211,28', shape: 'circle', clickable: false },
  { id: 21, title: 'Enter', coords: '1079,490,22', shape: 'circle', clickable: false },
  { id: 22, title: 'RFON', coords: '246,112,297,140', shape: 'rect', clickable: false },
  { id: 23, title: 'MODON', coords: '300,115,352,139', shape: 'rect', clickable: false },
  { id: 24, title: 'left', coords: '858,236,19', shape: 'circle', clickable: false },
  { id: 25, title: 'right', coords: '929,236,18', shape: 'circle', clickable: false },
  { id: 26, title: 'Bottom1', coords: '288,494,22', shape: 'circle', clickable: false },
  { id: 27, title: 'Bottom2', coords: '380,497,22', shape: 'circle', clickable: false },
  { id: 28, title: 'Bottom3', coords: '471,496,21', shape: 'circle', clickable: false },
  { id: 29, title: 'Bottom4', coords: '562,497,20', shape: 'circle', clickable: false },
  { id: 30, title: 'Bottom5', coords: '652,497,20', shape: 'circle', clickable: false },
  { id: 31, title: 'Bottom6', coords: '743,496,20', shape: 'circle', clickable: false },
  { id: 32, title: 'Mod', coords: '1079,237,23', shape: 'circle', clickable: false }
]);

特效方法 

const handleHighlight = (id:number) => {
  const escapedId = id;
  const $element = $(`#${escapedId}`);
  const data = $element.mouseout().data('maphilight') || {};
  data.alwaysOn = true;
  data.fillColor = "feeeed";
  $element.data('maphilight', data).trigger('alwaysOn.maphilight');
  setTimeout(() => {
    const data = $element.mouseout().data('maphilight') || {};
    data.fillColor = "ff0000";
    data.alwaysOn = false;
    $element.data('maphilight', data).trigger('alwaysOn.maphilight');
  }, 300);
}

开启特效 

onMounted(() => {
  initHighCharts();
  $(function() {
    $('#mapAll').maphilight({
      fillColor: 'ff0000',
      strokeColor: "FFFFFF",
      strokeWidth: 3,
      fillOpacity: 0.6,
    });
  });



});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

钉钉虚拟位置打卡

我用蓝奏浏览器分享了[base_r_sign], 下载链接:https://wwp.lanzoup.com/i5NK526t7u9e 提取码 : 7wib, 你可以不限速下载哦\n\n通过百度网盘分享的文件&#xff1a;彤彤240724…\n链接:https://pan.baidu.com/s/1x_xhRQDopvQBAg-nWUNf4Q?pwd6666\n提取码:6666 下载好以后先配置…

超全!进销存系统排名前列的厂商有哪些?

本文将为大家盘点10款主流的进销存系统&#xff0c;为企业选型提供参考&#xff01; 进销存系统&#xff08;Inventory Management System&#xff09;&#xff0c;也称为物料管理系统或存货管理系统&#xff0c;是指企业为有效管理和控制进出货物的流动&#xff0c;准确记录库…

css——网格布局

名词解释 div{$}*9tab键&#xff0c;快捷生成 记首字母gtc 网格布局&#xff1a;display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; &#xff08;父元素&#xff09; <!DOCTYPE html> <html lang&q…

虚幻引擎Gameplay探索 Actor 之间的高效通信与交互技巧二

Actor通信介绍 在虚幻引擎中&#xff0c;Actor 是游戏世界中的基本构建块&#xff0c;类似于 Unity 中的 GameObject。Actor 通信是指不同 Actor 之间如何相互交互和传递信息&#xff0c;这在构建复杂的游戏逻辑时至关重要。以下是对 Actor 通信的详细介绍。 Actor通信方法表…

Redis复习笔记整理(没有人会有耐心看完包括我自己)

目录 1、Redis简介 1.1 补充数据类型Stream 1.2 Redis底层数据结构 1.3 Redis为什么快 1.4 持久化机制* 1.4.1 RDB持久化 bgsave执行流程 如何保证数据一致性 快照操作期间服务崩溃 RDB优缺点 1.4.2 AOF持久化 为什么采用写后日志 如何实现AOF 什么是AOF重写 AO…

Vue组件:动态组件、缓存组件、异步组件

1、动态组件 Vue.js 提供了对动态组件的支持。在使用动态组件时&#xff0c;多个组件使用同一挂载点&#xff0c;根据条件在不同组件之间进行动态切换。动态组件通过使用 Vue.js 中的 <component>元素&#xff0c;动态绑定到该元素的 is 属性&#xff0c;根据 is 属性的…

通过LDAP方式使用windows域认证

关于Windows的域认证, 网上大多都再介绍原理啥的, 但是对于从来没有做过.net的我来说, 和看天书一样. 我把我做的demo提供出来共大家参考. 需要参考的文章,参照如下 Windows下LDAP服务安装与使用_windows ldap-CSDN博客 OpenLDAP管理工具之LDAP Admin-腾讯云开发者社区-腾讯云…

计算机基础知识-3

机器周期的时钟周期&#xff0c;或者是cpu时钟周期&#xff0c;就是系统的主频&#xff0c;&#xff0c;根据主频的频率产生脉冲信号。一条指令的执行分为取指和执行&#xff0c;不同指令的取指和执行锁需要的时间也可能是不同的。 每个指令的机器周期可能不同&#xff0c;每个…

Centos镜像详细下载思路总结:包括阿里云镜像下载和官方地址下载--centos7和centos8 镜像下载

Centos镜像详细下载思路总结&#xff1a;包括阿里云镜像下载和官方地址下载。 系统镜像下载&#xff1a; 阿里云镜像&#xff1a; centos-vault安装包下载_开源镜像站-阿里云 官方网址&#xff1a; https://vault.centos.org/7.6.1810/isos/ 系统相关依赖包下载&#xff1a…

某里228滑块逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解…

【Web】XGCTF 西瓜杯 超详细题解

目录 CodeInject tpdoor easy_polluted Ezzz_php CodeInject eval里打代码注入 11);system("tac /0*");// tpdoor 可以传参isCache给../../config/route.php写入$config[request_cache_key] 打的是CheckRequestCache中间件解析的漏洞 think\middleware\Ch…

智能客服 | AI助理与内部知识库如何优化用户体验

在数字化转型的浪潮中&#xff0c;客户服务作为企业与客户之间的关键触点&#xff0c;其重要性不言而喻。随着人工智能技术的日益成熟&#xff0c;AI助理与企业知识库的深度融合正在重新定义客户服务的边界&#xff0c;为用户带来前所未有的便捷与个性化体验。 一、AI助理&…

5款翻译工具,告别百度在线翻译!

作为一个经常需要处理多语言文件的小编&#xff0c;我深知翻译工具的重要性。今天&#xff0c;我就来和大家聊聊几款市面上比较热门的翻译工具&#xff0c;一起来看看这几款翻译软件怎么样吧。 1、福昕在线翻译 网址&#xff1a;https://fanyi.pdf365.cn/doc 我发现它的界面简…

OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 拟合一条直线到2D或3D点集。 fitLine 函数通过最小化 ∑ i ρ ( r i ) \sum_i \rho(r_i) ∑i​ρ(ri​)来拟合一条直线到2D或3D点集&#xff0c…

什么是过压保护?常见的过压保护元器件有哪些?

在现代电子设备的设计和制造过程中&#xff0c;过压保护是至关重要的一个环节。过电压可能会导致电路板上的元器件损坏或系统故障&#xff0c;因此使用合适的#过压保护元器件#至关重要。 1. 什么是过压保护&#xff1f; 过压保护是一种电子和电气系统中的安全措施&#xff0c…

搭建Eureka高可用集群 - day03

全部代码发出来了 搭建服务提供者 步骤&#xff1a; 1.创建项目&#xff0c;引入依赖 2.添加Eureka相关配置 3.添加EnableEurekaClient注解 4.测试运行 步骤1&#xff1a;创建项目&#xff0c;引入依赖 使用Spring Initializr方式创建一个名称为eureka-provider的Sprin…

Git 撤销commit

上一篇&#xff0c;Git撤销add&#xff0c;其实已经讲了用reset命令可以取消commit&#xff0c;这里再啰嗦下。先看&#xff1a; git如何撤回已经commit • Worktile社区 首先明确一点&#xff0c;无论是commit还是撤销commit&#xff0c;都是在本地暂存区操作&#xff0c;而…

HTML5中IndexedDB前端本地数据库

一、indexedDB为何替代了Web SQL Database&#xff1f; 跟小朋友的教育从来没有什么“赢在起跑线”这种说法一样&#xff0c;在前端领域&#xff0c;也不是哪来先出来哪个就在日后引领风骚的。 HTML5 indexedDB和Web SQL Database都是本地数据库数据存储&#xff0c;Web SQL Da…

陶建辉演讲干货分享,AI 时代下的数据预测和数据处理挑战

在 7 月 26 日的 TDengine 用户大会上&#xff0c;涛思数据&#xff08;TDengine&#xff09;创始人&CEO 陶建辉进行了题为《TDengine 助你决胜 AI 时代》的主题演讲。他不仅分享了 TDengine 的全面技术创新&#xff0c;还深入阐释了打造 TDengine AI 大语言模型插件 TDgpt…

浙大数据结构:02-线性结构3 Reversing Linked List

数据结构MOOC PTA习题 这道题也是相当费事&#xff0c;不过比上一个题好一些&#xff0c;这里我使用了C的STL库&#xff0c;使得代码量大幅减少。 题干机翻&#xff1a; 1、条件准备 这里我准备采用map来存地址和值&#xff0c;因为map的查找效率也是不错的 数组arr是存链…