Chrome 当我使用EyeDropper API抛出错误'EyeDropper'未定义

wf82jlnq  于 2023-08-01  发布在  Go
关注(0)|答案(4)|浏览(329)

我需要使用滴眼器来完成一个滴眼器。我的项目使用Vue 2 + Ts,我的代码:

<div
  v-if="haveEyeDropper"
  @click="handleClickPick"
>
  <i class="iconfont icon-xiguan"></i>
</div>

handleClickPick(): void {
  const eyeDropper = new EyeDropper();
  // ...
}

字符串
我收到错误“无法找到名称'EyeDropper'。你是说“滴眼液”吗-Vetur”and“'EyeDropper' is not defined -eslint”但我复制MDN文档(https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper)示例代码在index.html,它的作品.
(My浏览器为Chrome版本105.0.5195.52)

kadbb459

kadbb4591#

你能检查一下你的应用程序是否运行在Secure Context上吗?* (最有可能在当地发展)*

window.isSecureContext

字符串
如果它没有在安全环境中运行,则无法访问EyeDropper API(根据MDN):
x1c 0d1x的数据
如果是这样的话;您可以选择通过使用ngnix等通过HTTPS访问应用程序。

dwbf0jvd

dwbf0jvd2#

我想出了一个可行的计划,但不是很标准。
我在index.html中添加了以下代码:

<script>
  if (!!window.EyeDropper) {
    window.EyeDropperTarget = new EyeDropper();
  }
</script>

字符串
我检查了window.EyeDropper,如果有,我就把new EyeDropper()示例安装在window上。
然后我可以在商业代码中使用它:

handleClickPick(): void {
  const picker = window.EyeDropperTarget;

  picker.open().then((result: any) => {
    const color = result?.sRGBHex;
    // ...
  });
}

eh57zj3b

eh57zj3b3#

我的领导给了我一个标准方法,代码如下:

new example = (window as any).EyeDropper()

字符串
Vetur报告错误的原因是:无法识别的Esline窗口新API。

rseugnpd

rseugnpd4#

您需要在Windows上声明该变量/类型。类似于“window”对象上的任何新变量(非默认值)。

declare global {
    interface Window {
        EyeDropper?: any;
    }
}

字符串
检查这个线程:https://stackoverflow.com/a/12709880/4978626

相关问题