【问题标题】:Uppercase tags in Internet Explorer 8Internet Explorer 8 中的大写标记
【发布时间】:2012-08-08 13:48:06
【问题描述】:

我有一个仅在 IE8 中表现出来的 HTML 操作问题。

我最近编写了一些 javascript 来分析标签并根据它的内容做了一些事情。

这段代码假定标签是小写的。

if(value.indexOf('<input') == -1)

这在 IE8 下失败,我必须修复它。

现在我可以进行如下第二次检查:

if(value.indexOf('<input') == -1 && value.indexOf('<INPUT') == -1)

这会抓住这两种可能性,但看起来非常混乱。

有没有更好的方法来处理这种情况? JQuery 能解决这个问题吗?

"value" 是从 JQGrid 传递给我的 javascript 函数的 html 字符串。使用 IE8 字符串为大写,使用 IE9、FF、Chrome 为小写。

【问题讨论】:

  • 我很好奇,在什么情况下 IE 会改变你的 HTML 的大小写,或者只有当你告诉 IE 自己生成代码时才会这样?
  • @Chris:嗯,一方面我们不知道value 是如何被检索到的,但是当你得到一个DOM 节点时,你只是在处理文档的内部表示,这仅与您为生成该文档而编写的代码松散相关。大多数浏览器会将innerHTML 报告为小写,而不管您用于创建文档的大小写如何,尽管如果您在 quirks 模式下运行 IE9,它会产生全部大写。
  • @DavidHedlund:是的,我明白你对 DOM 的意思。我认为,如果 value 是在测试特定元素是否存在之前被转换为字符串的 dom 的一部分,那么在我们正在寻找字符串的部分之前就会出现问题。 ;-)
  • 我意识到我的第一句话很有误导性。 JQGrid 正在返回值。在 IE9、FF、Chrome 等中,它返回小写,在 IE8 中返回大写。我做了一个谷歌搜索,看到一些人提到,但我不确定确切的原因。
  • 我现在更新了这个问题,让它更清楚......希望

标签: javascript jquery internet-explorer-8 jqgrid-asp.net


【解决方案1】:

这应该可以解决问题:

if(value.toLowerCase().indexOf('&lt;input') == -1)

【讨论】:

    【解决方案2】:

    使用

    if(value.toLowerCase().indexOf('<input') == -1) { ... }
    

    if(!/\<input/i.test(value)) { ... }
    

    后者是一个设置了忽略大小写标志的正则表达式。

    【讨论】:

      【解决方案3】:

      显然,根据您的情况,您还可以使用 jquery .is() 函数来测试元素 http://api.jquery.com/is/

      例如

      $target.is("input")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多