鍍金池/ 問答/HTML/ VUE 同時監(jiān)聽 多個事件,safari瀏覽器上異常

VUE 同時監(jiān)聽 多個事件,safari瀏覽器上異常

safari瀏覽器上,觸發(fā) contextmenu右鍵 同時 會觸發(fā) click事件

google瀏覽器 觸發(fā) contextmenu右鍵 同時 不會觸發(fā) click事件

li 上 同時監(jiān)聽( mouseout mouseover contextmenu on:click)

<li @mouseover="overShow(item.tree_id,this)" @mouseout="outHide(item.tree_id,this)" @contextmenu.prevent.stop="open_menu($index,item.tree_id,item.path,true,$event)" v-for="(item,$index) in tree_list" :class="[{'active':item.tree_id === tree_list[0].active},{'open':item.open},{'hover': item.tree_id === tree_list[0].hover && item.tree_id != tree_list[0].active},{'changed' : item.changed}]"
v-on:click.stop="select_tree(item.tree_id,item.path)" v-on:keyup.right.stop="show_menu">
    <div class="wholerow"></div><i class="icon" :class="[{'fa fa-caret-right'  : item.child.length > 0 && !item.open},{'fa fa-caret-down'  : item.child.length > 0 && item.open}]" v-on:click.stop="child_open($index,this)"></i>
 <a class="text">
                                    {{item.name}}
                                </a>

屏幕快照 2017-12-17 下午12.10.17
clipboard.png

回答
編輯回答
巷尾

根本還是沒有解決,最后 采取 js 定時器 。

總結(jié)發(fā)現(xiàn) 阻止 @ contextmenu 事件向上冒泡,就會 觸發(fā) click事件

<template>
    <div class="indexContainer">
            
          <ul>
            <li @click="onClick" @contextmenu="onContextmenu($event)">
              click

              <ul>
                <li>test</li>
              </ul>
            </li>
          </ul>

    </div>
</template>

<script>
    export default {
        name: 'test',
        data() {
             return {
                 
             }
        },
        components: {
        },
        created: function() { 
        

        },
        methods: {
                 onClick () {
                 event.preventDefault();
                 console.log('onClick')
               },
               onContextmenu (event) {
                 event.preventDefault();

                 console.log('onContextmenu')
               },
               onMouseout() {
                console.log("onMouseout");
               },
               onMouseover() {
                console.log("onMouseover");
               }
        }
    }
</script>

圖片描述

2017年10月10日 03:52
編輯回答
情未了

首先:safe瀏覽器上是指safari瀏覽器嗎?

我做了在線例子,表示在safari上并沒有出現(xiàn)右擊會調(diào)用click的情況 demo

建議你先做一個簡單的例子,在試一下。另外事件綁定最好都用@。

<div id="app">
  <button @click="onClick" @contextmenu="onContextmenu">
    click
  </button>
</div>

new Vue({
  el: '#app',
  methods: {
    onClick () {
      console.log('onClick')
    },
    onContextmenu () {
      console.log('onContextmenu')
    }
  }
})
2018年5月13日 19:18