javascript - 如何从 vue.js 捕获 Jquery 事件

标签 javascript jquery iframe vue.js vuejs2

场景:我有一个 iframe(托管在同一个域中,但仅使用 Jquery)并且它已经被编码为使用参数触发一些事件。而且我必须在父 vue.js 应用程序中使用参数捕获这些事件。

iframe:

$('*').mouseover(function (event) {
  var event = jQuery.Event( "mouseover-highlight" );
  event.top = $(this).offset().top;
  event.left = $(this).offset().left;
  parent.$('body').trigger(event);
});

vue.js

从 vue.js 以某种方式捕获此事件并相应地设置 div 的 css 样式(设置“绝对”位置)。在 v2 出现之前,我通过在 vue.js 中使用 Jquery 使用 vue.js 完成了它,但是我在文档中看到 vue.js 不再能够捕获 native 事件。有什么解决办法吗?

最佳答案

jQuery 使用它自己的事件系统。您无法使用 Vue 捕获从 jQuery 发出的事件,您必须使用 jQuery 捕获它们并从处理程序调用 Vue。

new Vue({
  el: "#app",
  data:{
    iframeSource: $("template").html()
  },
  methods:{
    onMouseover(event){
      alert(`Top: ${event.top}, Left: ${event.left}`)
    }
  },
  mounted(){
    $("body").on("mouseover-highlight", this.onMouseover)    
  },
  beforeDestroy(){
    $("body").off("mouseover-hightlight", this.onMouseover)
  }
})

这里是 an example它的工作。

注意:当使用 Vue 以外的东西添加事件时,你应该自己管理删除它们,特别是如果你将它添加到组件中。组件被多次创建/销毁,您不希望以多个处理程序结束。

关于javascript - 如何从 vue.js 捕获 Jquery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46176331/

相关文章:

html - IFrame 不在 IOS Safari 上滚动

javascript - jQuery on click 函数 To li 和嵌套 li

javascript - jQuery 卡切换事件类

javascript - Ember 中的 View /状态逻辑应该放在哪里?

html - 使用 iframe 填充整个剩余屏幕制作表格行

c# - 从 iframe 中读取查询字符串参数

javascript - Vuex 从状态加载现有表单数据以进行编辑

javascript - 让 jquery 标签插件在 IE 中工作

javascript - 如何获取用户的地理位置(城市名称,而不是坐标)并将其发送到文本框

javascript - 在 codeigniter 中使用 jquery 显示确认消息