`

javascript - trick IE form and its expando attribute

阅读更多

there is a known issue that if you have a form with several inupt elements, and those elemnt happens to have specific id or names then the elements becomes the expando attribute of the form element. 

 

e.g.. 

 

 

<body>
<form id="form" action="/">
<input type="text" id="id"/>
<input type="text" name="action"/>
</form>
</body>

 

 in this example, if you do 

 

form.id, then it return the DOM element, and if you do form.action, it returns another input element. 

 

so to work around, this, there is a method which is called getAttributeNode. please see the following code which first check the attribute node then check to see if there there is attribute with that name (the expando is equivalent of getAttribute) 

 

 

/**************************************
*@Name: ieformexpando.js
*@Summary
*  due to some reason, the IE will treat some input element as attribute to the form object  if the nput elements happens to have a specific name or ID
*
*
* <form id="form" action="/">
*  <input type="text" id="id"/>
* <input type="text" name="action"/>
* </form>
***************************************/

function attr(elem, name) {
  if (elem.nodeName.toUpperCase() === "form" && elem.getAttributeNode(name)) {
    return elem.getAttributeNode(name).nodeValue;
  }
  else {
    return elem.getAttribute(name);
  }
}
 

 

 

and below is the code that test the code above.

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- ieformexpando.html -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="../unit.js"></script>
    <script type="text/javascript" src="ieformexpando.js"></script>
    <script type="text/javascript">
      window.onload = function () {
        test("test IE expando ", function () {
          var form = document.getElementById("form");
          // both are 'form' and '/' accordingly
//          alert(attr(form, "id"));
//          alert(attr(form, "action"));
          assert(attr(form, "id") === 'form', "attr return the attribute node rather that the attribute where is faked by the element");
          assert(attr(form, "action") === '/', "attr return the attribute node rather that the attribute where is faked by the element");
        });
      };
    </script>
    <style type="text/css">
      #results li.pass { color:Green }
      #results li.fail { color:red}
    </style>
</head>
<body>
<ul id="results" />
<form id="form" action="/">
<input type="text" id="id"/>
<input type="text" name="action"/>
</form>
</body>
</html>
 

 

 

分享到:
评论

相关推荐

    Pandas-and-NumPy-Tips-Trick-and-Techniques-master.zip

    Pandas-and-NumPy-Tips-Trick-and-Techniques-master

    S-a-D-trick.rar_Join In

    在VB6(Visual Basic 6)中,"S-a-D-trick.rar_Join In" 这个主题涉及到的是文件分割与合并的技术。在处理大文件时,为了方便传输或者存储,我们可能会选择将其分割成多个小文件,而在需要使用整个文件时,则需要将...

    python-trick

    Python-trick,上传的事pdf文档

    在规定的时间内,使用鼠标控制帽子接住落下的保龄球,躲避炸弹。_Hat-Trick.zip

    在规定的时间内,使用鼠标控制帽子接住落下的保龄球,躲避炸弹。_Hat-Trick

    HLP-Trick-crx插件

    【HLP-Trick-crx插件】是一款专为解决特定网页限制而设计的浏览器扩展程序,主要用于恢复用户在浏览网页时被禁用的复制、粘贴功能,以及上下文菜单和本地高亮显示功能。这款插件特别适用于那些因为版权保护或者安全...

    深度学习领域CNN橄榄球比赛NFL目标检测(带数据集)-cnn-baseline-more-tta-trick

    语言:python 内容包括:源码、数据集、数据集描述、论文 目的:使用CNN算法在橄榄球比赛中目标检测。 带数据集很好运行,主页有搭建环境过程。主页有更多源码。 数据集描述如下: 在这场比赛中,你的任务是预测球员...

    gtg-grind-trick-generator

    gtg-grind-trick-generator PWA Web应用程序(Node.js,JS,HTML,CSS) Chrome,Safari,Firefox,Edge(Android,iOS,MacOS,Windows) 离线工作Android应用程式使用Google Workbox,Webpack制作

    py-trick-book:关于 Python 的高级提示和技巧

    Python 提示和技巧 ... git clone https://github.com/plasmashadow/py-trick-book.git 我假设您安装了 ipython 导航到目录并执行 ipython notebook 笔记: 退出间谍活动并自己阅读 或者 保持冷静,加入草帽海贼团

    tips-n-trick

    表单是HTML中的重要部分,&lt;form&gt;、、、和等元素用于收集用户输入。了解如何使用type属性(如text、email、password等)和action、method属性(指定提交表单的位置和方式)是创建交互式网页的关键。 此外,HTML5引入...

    21-card-trick:在 React 中完成的 21 张卡片技巧

    React 21 卡技巧一个演示卡片技巧的React应用程序。动机该项目旨在学习如何使用 React 钩子和进行嵌套的 api 调用。 该项目不再进行。怎么玩记住 21 张卡片中的 1 张后,单击完成。 选择您的卡片所在的 3 堆中的哪一...

    vdr-hattrick-开源

    1. 下载最新版本的源代码,例如压缩包内的hattrick-0.1.6。 2. 在VDR环境中编译和安装插件。这可能需要熟悉Linux环境和基本的编译命令。 3. 配置VDR以启用Hattrick插件,并设置与Hattrick账户的连接信息。 4. 更新...

    CMCC-Trick:招惹CMCC-* WLAN

    Trick-CMCC 利用CMCC公共热点的小漏洞免费上网~~ :) sudo ./conn.sh Notice: 目前只知道我工CMCC有这特色, 其他地区尚不明确 Notice: 脚本适用于使用NetWorkManager网络sds管理工具的系统 Notice: 不必惊讶原理, ...

    HLP-绝招「HLP-Trick」-crx插件

    该扩展程序重新启用网页上的复制/粘贴功能,上下文菜单和本机突出显示功能。 支持语言:English (United States)

    [Head.First.JavaScript].Michael.Morrison...

    Sure, you can submit a form and maybe do a trick here and there with some crafty HTML and CSS coding, but you’re really just playing Weekend at Bernie’s propping up a lifeless web page. Real live ...

    论文研究-From Feature Space to Primal Space: KPCA and Its Mixture Model.pdf

    From Feature Space to Primal Space: KPCA and Its Mixture Model,王海贤,,Kernel principal component analysis (KPCA), as a nonlinear extension to PCA via kernel trick, has received great attention for...

    Trick

    "Trick"这一主题似乎与一套特别的字体资源相关,其中包括多种不同风格的图像文件(.gif)和TrueType字体文件(.TTF)。让我们深入探讨一下这个话题。 首先,.gif 文件是一种常见的图像格式,支持透明度和动画,常...

    NIO trick and trap NIO网络

    ### NIO Trick and Trap:构建高性能Java NIO网络框架 #### 概述 NIO(New I/O),作为Java平台的一项重要技术革新,为开发者提供了更高效的数据处理方式。相较于传统的IO模型,NIO通过非阻塞式I/O操作、多路复用...

    The Kernel Trick.pdf

    在机器学习中,核技巧(Kernel Trick)是一种非常重要的技术,它允许我们在高维特征空间中有效地进行线性学习算法的操作,而无需显式地计算出高维空间的数据表示。核技巧在诸如支持向量机(SVM)等算法中发挥了重要...

    Hattrick球场上座率概算

    Hattrick球场上座率概算 Hattrick球场上座率概算

    NIO trick and trap .pdf

    ### NIO陷阱与解读 #### 一、NIO概述及变迁 **NIO**(New I/O)是Java为提高I/O操作效率而引入的新特性,最初在JDK 1.4版本中作为JSR 51规范的一部分被提出。随着技术的发展,在JDK 7中进一步扩展为NIO 2(JSR 203...

Global site tag (gtag.js) - Google Analytics