1

我正在寻找一种模拟点击<a>标签的方法

众所周知,没有成功(唯一的解决方法是window.open...)

但是我在网上发现了一些代码和平并设法使其工作:

http://jsbin.com/itujek/5/edit

Chrome
IE

问题出在FF上。

我很高兴与您分享代码,并寻求在 FF 中起作用的解决方案。

我应该在这段代码中做什么才能让这段代码与 FF 一起使用?

  <script>
        function doClick(event, myA)
        {
            if (myA.click)
            {
                myA.click()
            }
            else if (document.createEvent)
            {
                if (event.target !== myA)
                {
                    var tmpEvent = document.createEvent("MouseEvents");
                    tmpEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    var allowDefault = myA.dispatchEvent(tmpEvent);
                }
            }
        }


      $(document).ready(function(){

            $(".myBtn").on('click',function (event) 
                           { doClick(event, $("#link")[0]);    });
      });



    </script>
</head>
<body>
    <a id="link" href="http://www.msdn.com">Normal link</a>
    <button type="button" class="myBtn"   >
        do click</button>
    <br />
    <br />
</body>
4

4 回答 4

2

您可以尝试使用jquery.simulate.js

$(elem).simulate(mouse_or_keyboard_event_type, options);

支持的事件类型:

  • 鼠标: mouseover、mouseout、mousedown、mouseup、mousemove、click、dblclick
  • 键盘: keyup、keydown、keypress
于 2012-07-04T08:27:55.397 回答
0

看这里的代码

if (myA.click)
{
   myA.click()
}

也许您的 firefox 元素具有 .click 属性,因此它只是调用函数 click (事件)而不是实际执行重定向。我的建议是删除这部分并模拟真正的点击。或者您可能想通过使用来模拟重定向window.location.href = anchor.href

于 2012-07-04T08:31:00.717 回答
0

代替

if (myA.click){
    myA.click();
}

你可以做

if (myA.click){
    window.location.href = myA.href;
}

另一件事,在 未定义if (e.target !== myA) 变量的行上,它应该是.eevent

于 2012-07-04T08:35:39.690 回答
0

在这种情况下,我更愿意避免“伪造”事件。您是否尝试过重新设置 href 并手动重定向到它?试试这个:

$(".myBtn").on('click', function(event) {
    doClick($("#link"));
});


function doClick($el) {
    var href = $el[0].href;
    if ($el.attr("target") != "_blank") {
        window.location.assign(href );
    }
    else {
        window.open(href, "newWindow");
    }
}

示例小提琴

于 2012-07-04T08:39:24.167 回答