0

内容脚本:

var $ = window.$.noConflict(true); // Required for IE

function startFunc() {

    $('a').mouseover(function(e){

        var anchor=this;
        var href=$(anchor).attr('href');

        if(href!='#'){

            $('.klik-me').remove();

            const xPos=e.pageX-20;
            const yPos=e.pageY-20;

            let $klikMe=$('<span class="klik-me">Click Me!!</span>').css({
                'padding':'5px',
                'background':'#000',
                'color':'#FFF',
                'font-size':'12px',
                'position':'static',
                'top':yPos,
                'left':xPos,
                'text-align':'center',
                'z-index':999999
            });

            $(anchor).append($klikMe);
        }

    });


}

$('body').on('click','.klik-me',function(){

    const href_in=$(this).parent().attr('href');

    kango.console.log(href_in);

    kango.dispatchMessage('storeHref', {href:href_in});
});


kango.addMessageListener('hrefSuccess', function(event) {

    kango.console.log(event.data.link);

});

背景脚本:

kango.addMessageListener('storeHref', function(event) {

event.target.dispatchMessage('hrefSuccess', {link:event.data.href});

});

我正在为页面上的所有锚标签添加一个弹出窗口(这工作正常),我在 Jquery 中添加了一个点击事件(我喜欢这个)并kango.dispatchMessage用于向后台脚本发送消息。似乎没有任何工作。

任何帮助,将不胜感激。

PS:我以前使用过crossrider(Awesome)框架。

4

2 回答 2

0

我认为正在发生的是单击事件正在冒泡到您的<a>元素并触发默认导航操作。

在委派事件处理中停止冒泡/默认行为是困难的。相反,我会做的是<span>删除<a>. 例如

let $klikMe = $('<span class="klik-me">Click Me!!</span>')
  .css({ ... })
  .data('href', href) // set the href data into the <span>

$(document.body).append($klikMe) // append to body, not anchor

并在您的点击处理程序中

$(document).on('click', '.klick-me', function() {
  const href_in = $(this).data('href')

  // then continue as in your original code

  return false // the click should have no default action
})
于 2017-11-28T05:25:30.330 回答
-2

使用下面的片段是我到处阅读的内容,但是我无法让它工作。

目前正在尝试做同样的事情:新页面加载后的jQuery点击事件

也许它可以有一些用处。

干杯。

$(parent).on('click', child , callback);
于 2017-11-28T05:06:15.473 回答