Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

i-screen-shot

Package Overview
Dependencies
Maintainers
0
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

i-screen-shot

web端自定义截屏插件(Vue3版)

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

vue-web-screen-shot · npm yarn github

web端自定义截屏插件(Vue3版),运行视频:实现web端自定义截屏功能 , 本插件仅支持Vue3,如需在其他平台使用请移步 :js-web-screen-shot 效果图如下: 截屏效果图

写在前面

关于此插件的更多介绍以及实现原理请移步:

插件安装

yarn add vue-web-screen-shot

# or

npm install vue-web-screen-shot --save

插件使用

由于插件使用Vue3编写,因此它只能在Vue3项目中运行,如果你需要在vue2项目或者其他js项目中运行请移步:js-web-screen-shot,它采用原生js编写,功能与本插件功能一致。

注意⚠️: 如果需要使用插件的webrtc模式或者截图写入剪切板功能,需要你的网站运行在https环境或者localhost环境。

  • 在项目的入口文件main.ts/main.js中加入下述代码
// 导入截屏插件
import screenShort from "vue-web-screen-shot";
const app = createApp(App);
// 使用截屏插件
app.use(screenShort, { enableWebRtc: false })
  • 在你的需要使用的业务代码中,添加下述代码
<template>
  <!--截图组件-->
  <screen-short v-if="screenshotStatus"
  @destroy-component="destroyComponent"
  @get-image-data="getImg"
  ></screen-short>
</template>

<script lang="ts">

export default defineComponent({
  setup(props, context) {
    const screenshotStatus = ref<boolean>(false);
    // 销毁组件函数
    const destroyComponent = function(status: boolean) {
      screenshotStatus.value = status;
    }
    // 获取裁剪区域图片信息
    const getImg = function(base64: string) {
      console.log("截图组件传递的图片信息", base64);
    }
    
    return {
      screenshotStatus,
      destroyComponent,
      getImg
    }
  }
})
</script>

参数说明

如示例代码所示,在template中直接使用screen-short插件,绑定组件需要的事件处理函数即可。

接下来就跟大家讲下组件中每个属性的意义:

  • screenshotStatus 用于控制组件是否出现在dom中
  • @destroy-component 用于接收截图组件传递的销毁消息,我们需要在对应的函数中销毁截图组件
  • @get-image-data 用于接收截图组件传递的框选区域的base64图片信息,我们需要为他提供一个函数来接收截图组件传递的消息
  • @webrtc-error 使用webrtc模式截图时,当用户的浏览器不支持或者未授权时会触发此回调
可选参数

截图插件有一个可选参数,它接受一个对象,对象每个key的作用如下:

  • enableWebRtc 是否启用webrtc,值为boolean类型,值为false则使用html2canvas来截图
  • level 截图容器层级,值为number类型。
  • clickCutFullScreen 单击截全屏启用状态,值为boolean类型, 默认为false
  • hiddenToolIco 需要隐藏的截图工具栏图标,值为{ save?: boolean; undo?: boolean; confirm?: boolean }类型,默认为{}。传你需要隐藏的图标名称,将值设为true即可。
  • enableCORS html2canvas截图模式下跨域的启用状态,值为boolean类型,默认为false
  • proxyAddress html2canvas截图模式下的图片服务器代理地址,值为string类型,默认为undefined
  • writeBase64 是否将截图内容写入剪切板,值为boolean类型,默认为true
  • wrcWindowMode 是否启用窗口截图模式,值为boolean类型,默认为false,即当前标签页截图。如果标签页截图的内容有滚动条或者底部有空缺,可以考虑启用此模式。
  • hiddenScrollBar 是否隐藏滚动条,用webrtc模式截图时chrome 112版本的浏览器在部分系统下会挤压出现滚动条,如果出现你可以尝试通过此参数来进行修复。值为Object类型,有4个属性:
    • state: boolean; 启用状态, 默认为false
    • fillState?: boolean; 填充状态,默认为false
    • color?: string; 填充层颜色,滚动条隐藏后可能会出现空缺,需要进行填充,默认填充色为黑色。
    • fillWidth?: number; 填充层宽度,默认为截图容器的宽度
    • fillHeight?: number; 填充层高度,默认为空缺区域的高度

使用当前标签页进行截图相对而言用户体验是最好的,但是因为chrome 112版本的bug会造成页面内容挤压导致截取到的内容不完整,因此只能采用其他方案来解决此问题了。wrcWindowModehiddenScrollBar都可以解决这个问题。

  • wrcWindowMode方案会更完美些,但是用户授权时会出现其他的应用程序选项,用户体验会差一些
  • hiddenScrollBar方案还是采用标签页截图,但是会造成内容挤压,底部出现空白。

两种方案的优点与缺点都讲完了,最好的办法还是希望chrome能在之后的版本更新中修复此问题。

写在最后

至此,插件的所有使用方法就介绍完了。

Keywords

FAQs

Package last updated on 02 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc