繁体   English   中英

Onclick JavaScript 在 IE 中无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM