我试图在Vue条件下使用窗口对象:

<li v-if="window.SpeechRecognition || window.webkitSpeechRecognition">
    <a href="#">Voice</a>
</li>

但我得到了以下错误:

[Vue warn]: Property or method "window" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

如果用户的浏览器支持函数SpeechRecognition,我如何解决这个错误并仅显示HTML元素?

推荐答案

您只能引用模板中作用域为相关Vue实例的变量.警告是说您的Vue实例没有名为window的属性或方法(无论如何,这不是您试图引用的).

只需将Vue实例(speechRecognition或其他)上的数据属性设置为v-if语句中的值,然后引用该属性,而不是try 从模板内部直接访问window对象(这是无法做到的):

data() {
  return {
    speechRecognition: window.SpeechRecognition || window.webkitSpeechRecognition,
  }
}

<li v-if="speechRecognition">
  <a href="#">Voice</a>
</li>

Vue.js相关问答推荐

Vue3多姆参考已安装的添加EventButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButtButt

Vue Datepicker 不会在渲染时显示默认日期

Vue3 动态渲染

Rails Webpacker 还是 Vue-CLI?

如何在 vuejs 自定义指令中传递动态参数

Vue.js 开发工具未显示

Vue:限制文本区域输入中的字符,截断过滤器?

Vuetify 单选按钮未显示为选中状态

如何告诉 Vue 应用使用 Firebase 模拟器?

如何使用 VueJS / Typescript 导入 JSON 文件?

阻止 Vue 积极重用 dom 元素

基于媒体查询的vue绑定值

交换数组项

错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (88)

动态更改我的 Vue.js SPA 主题的最佳方式?

Vuejs - 使用 v-if 切换的保持活动组件

从子组件 Vue 更新父模型

Vue.js 和 jQuery datepicker/timepicker 双向绑定

检测 Vue-Router 导航Guards中的后退按钮

Mapbox 事件监听器