Javascript 即将解决模拟点击Href锚?
我在寻找一种模拟点击Javascript 即将解决模拟点击Href锚?,javascript,jquery,html,cross-browser,Javascript,Jquery,Html,Cross Browser,我在寻找一种模拟点击 问题在于FF 我很高兴与您分享代码,并为解决方案,将在FF 为了使此代码与FF一起工作,我应该在该代码中执行什么操作 <script> function doClick(event, myA) { if (myA.click) { myA.click() } else if (document.cre
问题在于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>
函数doClick(事件,myA)
{
如果(myA.click)
{
myA.click()
}
else if(document.createEvent)
{
如果(event.target!==myA)
{
var tmpEvent=document.createEvent(“MouseEvents”);
initMouseEvent(“单击”,true,true,window,0,0,0,0,false,false,false,false,false,false,0,null);
var allowDefault=myA.dispatchEvent(tmpEvent);
}
}
}
$(文档).ready(函数(){
$(“.myBtn”)。在('click',函数(事件)
{doClick(event,$(“#link”)[0]);};
});
点击
您可以尝试使用:
支持的事件类型:
- 鼠标:mouseover、mouseout、mousedown、mouseup、mousemove、click、dblclick
- 键盘:向上键、向下键、按键
查看此处的代码
if (myA.click)
{
myA.click()
}
也许您的firefox元素有.click属性,所以它只调用函数click(event),而不是实际执行重定向。我的建议是删除这个部分,并模拟一个真正的点击。
或
您可能希望使用window.location.href=anchor.href
而不是
if (myA.click){
myA.click();
}
你能行
if (myA.click){
window.location.href = myA.href;
}
另一件事,在线上
if(例如,target!==myA)
变量e
没有定义,它应该是event
在这种情况下,我更喜欢避免“伪造”事件。您是否尝试过重新键入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");
}
}
所以问题在于FireFox。。。有什么线索表明它会成为一个问题吗?在任何人回答之前,您需要解释。@BenEverard问题是Firefox将*不*重定向到myA.href
您是否尝试过$(“#link”).trigger(“单击”)<代码>?此外,您的参数被称为
event,但您的代码使用了
e.target`.@RoryMcCrossan no。。。。(开玩笑吧,这是我尝试的第一件事。)如果你绑定了自己的click方法,那么click就起作用了。但是如果你不这样做,它就不会像你按下锚一样被激活。我编辑。谢谢关于window.location-这是我已经知道的解决方案(我在问题中也提到过)哦,你说的是window.open
,我以为你在谈论另一种方法,对不起。我已经写道:唯一的解决方法是by window.open。。。这是我不想要的…:)目前我正在开发我的解决方案,这只是你的解决方案(从href获取attr并打开一个新窗口…我在问题中已经提到这是唯一的解决方案…但我更喜欢调整并找到解决方案)
if (myA.click){
window.location.href = myA.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");
}
}