【问题标题】:Code not working with Internet Explorer 9代码不适用于 Internet Explorer 9
【发布时间】:2013-07-05 05:47:09
【问题描述】:

无论出于何种原因,我都无法在 IE9 中使用以下代码,但它可以在 Firefox、Chrome 和 Opera 中使用:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Laughing Man Productions²-Administrator Portal</title>

<!--[if !IE 9]> <!--><link rel="stylesheet" type="text/css" href="http://www.lmpgames.com/WEB401/W2/css/login_page.css"/><!--<![endif]-->

<!--[if IE 9]>
<link rel="stylesheet" type="text/css" href="http://www.lmpgames.com/WEB401/W2/css/login_page_IE.css"/>
<![endif]-->


</head>

<body>
<div class="login_bg">
  <form action="" method="post" enctype="multipart/form-data">
    <fieldset class="fset">
      <div class="username_text">
        Username/Email Address:
          <span class="username_field">
            <input name="txtbUName" type="text" style="background-color:#DDDDDD;" value="Username" size="20" maxlength="60" />
          </span>
      </div><br/>

      <div class="password_text">
        Password:
          <span class="password_field">
            <input name="txtbPWord" type="password" style="background-color:#DDDDDD;" value="Password" size="20" maxlength="16" />
          </span>
      </div><br/>

      <div class="sub">
        <input name="btnSubmit" type="button" onclick="formatUName(this.form)" value="Submit" />
      </div>

      <textarea name="txtaFOutput" class="txta" cols="1" rows="1">

      </textarea>  
    </fieldset>
  </form>
  </div>



<script type="application/javascript">
    function formatUName(form)
    {
        //Set up variables and references for use later on
        var button = form.btnSubmit;
        var txta = form.txtaFOutput;
        var username = form.txtbUName;
        var password = form.txtbPWord;
        var uName = "default";
        var pWord = "";

        uName = username.value; //Obtain the value of the username field on submit

        //Then remove spaces from the value and change all letters to uppercase
        uName = uName.replace(/\s+/g, '');      
        uName = uName.toUpperCase();

        //Finally print the formatted username to the textarea
        txta.value = uName + " is your username";       
    }
</script>  


</body>     
</html>

当我在 IE 中加载页面并单击提交时,没有任何反应。我尝试将 .value 更改为 innerHTML 和 innerText 但它们都不能在 IE 中工作。

编辑:

在玩弄 IE 之后,我终于设法让调试运行,它吐出了这个错误:

行:23 错误:无法获取属性“appendChild”的值:对象为空或未定义

编辑 2:

忽略之前的错误。 IE 允许 Vuze 通过我不知道 Vuze 安装的插件注入 Javascript 代码。禁用它们,现在新的错误消息是关于我的函数名称的:

第 35 行: 属性 'formatUName' 的值为 null 或未定义,不是 Function 对象

【问题讨论】:

  • 您的评论语法肯定是错误的。将// 用于行 cmets
  • 您在 IE 中遇到任何错误吗?你有没有试过调试它,直到它工作的部分?
  • @Bergi 将评论标签更改为反斜杠没有变化。至于调试我不能。根据 IE 的开发工具,我的函数没有可执行代码,因此脚本标签中的断点无效。
  • 你应该使用 forward 斜杠,而不是 back 斜杠。此外,仅在 JS 上。保持 HTML cmets 不变。
  • @DannyBeckett 抱歉,它们是正斜杠。我时不时把它们弄混。

标签: javascript forms internet-explorer-9 textarea


【解决方案1】:

当我在 IE 中运行它时,JavaScript 工作正常,但表单没有提交。如果这是您面临的问题,原因是:

<input name="btnSubmit" type="button" onclick="formatUName(this.form)" value="Submit" />

type="button" 更改为type="submit"。当您在缺少显式提交按钮的表单中拥有 type="button" 时,浏览器行为是不可预测的。

【讨论】:

  • 更改类型以提交代码后仍然对我不起作用。
  • 当你说“它不起作用”时,什么发生了,什么没有发生? javascript是否被执行?表格提交了吗?尝试在javascript函数中添加alert("foo");看是否执行。
  • 当我点击提交按钮时,没有任何反应。无法放置中断,因为 IE 在我的脚本标记中看不到可执行代码。有关我能够让 IE 向我吐出的错误消息,请参阅我的原始问题。
  • alert("foo!"); 添加到formatUName 函数的顶部会发生什么?按提交时是否会弹出警报?
  • 不,但我现在收到一个新错误,指出函数名称 formatUName 未定义。
【解决方案2】:

在 HTML 中,&lt;!-- comment --&gt; 是正确的注释语法。

另一方面,Javascript 使用 ANSI C 标准 cmets,// comment/* comment */

你需要改变:

function formatUName(form)
{
    <!-->Set up variables and references for use later on
    var button = form.btnSubmit;
    var txta = form.txtaFOutput;
    var username = form.txtbUName;
    var password = form.txtbPWord;
    var uName = "default";
    var pWord = "";

    uName = username.value; <!--> Obtain the value of the username field on submit

    <!--> Then remove spaces from the value and change all letters to uppercase
    uName = uName.replace(/\s+/g, '');      
    uName = uName.toUpperCase();

    <!--> Finally print the formatted username to the textarea
    txta.value = uName + " is your username";
}

收件人:

function formatUName(form)
{
    // Set up variables and references for use later on
    var button = form.btnSubmit;
    var txta = form.txtaFOutput;
    var username = form.txtbUName;
    var password = form.txtbPWord;
    var uName = "default";
    var pWord = "";

    uName = username.value; // Obtain the value of the username field on submit

    // Then remove spaces from the value and change all letters to uppercase
    uName = uName.replace(/\s+/g, '');      
    uName = uName.toUpperCase();

    // Finally print the formatted username to the textarea
    txta.value = uName + " is your username";
}

【讨论】:

  • Geowil 应该更正他的注释语法是正确的,但是当我运行他的代码时,IE 似乎并没有对此感到窒息。
  • 如上所述,更改评论标签并不能解决问题。
【解决方案3】:

多个答案都有拼图。起初,我遇到的错误是由于 IE 允许将 Conduit Javascript 注入我所有网页的 Vuze 插件。第二个错误是 Internet Explorer 本身就是无缘无故的窃听器。

在测试代码开始工作时停止响应后重新启动IE后,几乎。还有一个问题,这是由 Nathaniel 建议将 btnSubmit 从一种按钮类型更改为一种提交类型引起的。这导致我所有浏览器中的代码停止工作;文本区域不会正确更新其值。

将类型改回按钮后,代码可在所有测试的浏览器中运行:IE9/Firefox 18.1/Opera 12.15/Chrome 28。

【讨论】:

  • @Bergi 实际上是 12. 12.15。可以发誓它是9。我一定是更新了它并忘记了。
猜你喜欢
  • 2014-08-24
  • 2015-07-01
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多