[英]Onclick JavaScript not working properly in IE
请原谅我的无知,我对 JavaScript 不是很熟悉,我的任务是修复一个不再在公司工作的开发人员的错误。
onclick
在 FireFox 中完美运行,但是在 IE 7&8(我们测试的唯一一个)中,它似乎正确地运行了onclick
函数,然后不是将数据提交到goStep3()
的表单 URL,而是运行在每个onclick
在页面上,使用href="#"
然后最终提交错误信息,因为该变量已被覆盖 50 次。
<a href="#" onclick="trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;">view</a>
编辑:当我运行trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;
trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;
在 IE8 的开发人员工具中,我收到一个错误,在函数之外返回 false ......删除它工作得很好。
我认为是导致问题的线路吗?
trackSponsor()
工作正常并返回false
goStep3()
是一个相当大的函数,但是它的工作原理是从其中的 4 个其他函数中检索值,并将值分配给theAction
的 URL
它通过EDIT完成功能:
var yr = $("#find-yr").attr('value');
var me = $("#find-me").attr('value');
var mo = $("#find-mo").attr('value');
var keywords = $("#find-keywords").attr('value');
var theAction = PATH_BASE+'find/step3/'+p_term+'/'+p_id+'/'+p_l_id+'/';
document.forms['FindForm'].action = theAction;
document.FindForm.submit();
return true;
我试过从这个函数返回 false,以及将document.FindForm.submit()
更改为document.forms['FindForm'].submit()
的“正确”语法,但它仍然不提交,直到运行完所有页面上的其他onclick
。
提前致谢!
注意事项:
jQuery 也正在被使用。
Javascript 没有抛出任何错误。
这在 FireFox 中工作正常
我可以看到它使用开发人员工具完成了其他onclick
的所有其他功能,并逐步完成了页面,直到它完成了页面上的所有其他onclick
功能,它才会提交goStep3
的结果。
“发布我之前的评论作为答案”
我看到很多 jQuery 与属性选择器一起使用,所以请根据这些检查代码。
编辑:
我注意到你对 JavaScript 不熟悉......所以如果你不知道,一个 jQuery 选择器会选择所有匹配某个“选择器过滤器”的标签并对它们执行特定的操作......所以如果有一个选择器选择所有带有href
属性的 A 标签(或者可能是它们之间的另一个公共属性......),那么这将是您的问题的原因。
编辑:-在您发布答案后-
很高兴你找到了答案...
虽然它有点奇怪,但根据您的问题,它会通过“带有 href="#”的每个元素......
然而,根据msdn ,事件冒泡只是将这些未处理的事件传递给父元素进行处理。 不是通过“类似”标签:)
哦,好吧..当谈到 IE 时,没有什么是合乎逻辑的
我首先删除“return false;” 来自 onClick 事件,因为它真的没有做任何事情。
尝试改变
href="#"
与
href='javascript:void(0)' .
我不能确定哪里出了问题,但我不鼓励使用表单的name
属性来引用它,就像你在这里所做的那样:
document.forms['FindForm'].action = theAction;
document.FindForm.submit();
为什么不尝试以下 jQuery:
$("form:FindForm").action = theAction;
$("form:FindForm").trigger("submit");
您还应该检查$("form:FindForm")
确实引用了所需的表单元素。
问题被调用是因为IE如何使用气泡! 感谢大家的帮助,我已经包含了要放在 goStep3() 中的代码解决方案。
var browserName = navigator.appName;
if (browserName == "Microsoft Internet Explorer") {
window.event.cancelBubble = true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.