【问题标题】:jquery attr("onClick") - ie and ffjquery attr("onClick") - 即和 ff
【发布时间】:2009-12-02 16:15:31
【问题描述】:

使用 jquery,我想从 A 标签的 onClick 属性中获取 javascript。

<a href='#' onClick='alert("boo");' />

在 Firefox 中:alert($('a').attr("onClick")) 显示:alert("boo")

在 IE 6/7 中:alert($('a').attr("onClick")) 显示:function anonymous(){alert("boo");return false;}

如何在 IE 6/7 中使用 jquery 仅检索 javascript 而不是包装函数? (或纯 javascript)?

弗兰科

【问题讨论】:

  • 只是好奇,为什么你特别需要在这个例子中检索'alert("boo")'?您是从另一个地方调用它还是现在只是在探索?如果您出于其他原因尝试检索该值,则可能有不同的处理方式。
  • 目前只是在探索 - 想知道为什么我无法获取文本/为什么在 ie6/7 中返回函数。 ie8 的行为就像 firefox...
  • @frankie boyle 好的。我自己现在对此很好奇,但想确保如果你不只是探索,没有不同的方法。谢谢。
  • FWIW,如果你查看 element.onclick 属性,而不是属性,Firefox 和其他人也会给你包装在 function 对象中的代码,因为这就是基于属性的方式事件处理程序已实现。正如 David Dorward 在下面所说,问题在于 IEonclick 属性的值。跨度>
  • 感谢大家的帮助/意见!

标签: javascript jquery


【解决方案1】:

如何在 IE 6/7 中只检索 javascript,而不是包装函数

您通常根本不想依赖字符串值来进行内联事件处理程序(事实上,您通常应该完全避免使用内联事件处理程序属性,而支持从脚本绑定到函数 — 尤其是如果您使用的是 jQuery,这种方法是常态)。但如果必须,解决方法是 DOM 方法 getAttributeNode

var link= $('a')[0]; // or whatever
alert(link.getAttributeNode('onclick').value);

【讨论】:

  • 完全同意内联事件处理程序的字符串是错误的 - 我只是在玩游戏,不明白为什么 IE 的行为不同......谢谢!
  • 但是在 ASP.NET WebForms 中默认会生成一堆 DOM 0 onclick 事件处理程序 - 我很高兴找到这个答案,因为我需要处理它们......好吧,使用他们;-)
【解决方案2】:

Internet Explorer attribute 处理 property

我不知道有什么变通方法。

【讨论】:

  • 对此进行扩展:锚标记的名称为'onclick'的属性的值是alert()调用;该标签对应的DOM节点的属性值就是匿名函数。
【解决方案3】:

比添加onclick属性更好的是代表IE6/IE7这个解决方案:

$("a").click(function () { .. anything to do .. })

【讨论】:

    【解决方案4】:

    你试过了吗:

    alert($('a').attr("onclick"))
    

    在 XHTML 中,onClick 不是正确的版本。

    【讨论】:

    • 因为 IE 不理解 XHTML(它认为它是格式错误的 HTML),所以不太可能。
    • 使用小写我得到:function onclick(){alert("boo");} - 所以同样的问题
    【解决方案5】:

    浏览器安全:

    jQuery('a')[0].getAttribute('onclick');
    

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多