Javascript Lotus Notes和IE发行;document.all(“RunAgentCreateAns”).click()在IE11中不起作用;

Javascript Lotus Notes和IE发行;document.all(“RunAgentCreateAns”).click()在IE11中不起作用;,javascript,lotus-notes,internet-explorer-11,Javascript,Lotus Notes,Internet Explorer 11,我支持在IE浏览器中使用的旧Lotus Notes应用程序 在很少有用户开始使用IE11之前,一切都很好 不起作用的JS代码 document.all("RunAgentCreateAns").click() RunAgentCreateAns是Lotus Notes中的按钮ID 同样的代码在IE9和IE8中工作。不知道为什么它在IE11中不起作用IE11不支持document.all()。改用document.getElementById()。有关详细信息,请参阅。IE11不支持docume

我支持在IE浏览器中使用的旧Lotus Notes应用程序 在很少有用户开始使用IE11之前,一切都很好

不起作用的JS代码

document.all("RunAgentCreateAns").click()
RunAgentCreateAns是Lotus Notes中的按钮ID


同样的代码在IE9和IE8中工作。不知道为什么它在IE11中不起作用

IE11不支持
document.all()
。改用
document.getElementById()
。有关详细信息,请参阅。

IE11不支持
document.all()
。改用
document.getElementById()
。有关详细信息,请参阅。

尽管MS文档明确表示它们不支持document.all,但一些编程测试显示IE11“安静地”仍然支持document.all

在IE11中,
文档。所有在适当的特性测试中使用的
本身都是“falsy”,这意味着它将无法通过特性存在测试-任何不受支持的特性都应该如此。但是,如果您直接使用它,例如document.all('fieldname'),您仍然会获得对ID为'fieldname'的元素的引用

考虑以下HTML代码段,该代码段在IE11 11.0.9600.17041版上进行了测试:

<html>
<script language="javascript">
   function testDA(){
      if (document.all){
         alert('Yes: ' + document.all['foo'].value);
      } else {
         alert('No: But...' + document.all['foo'].value);
      }

      var x = document.all['payday'];
      x.click();

      var y = document.all('payday');
      y.click();

      document.all('payday').click();
  }

  function clicked(){
      alert('clicked.');
  }
</script>
<form>
  <button onclick='testDA()'>Button 1</button>
  <button id='payday' onclick='clicked()'>Button 2</button>
  <input type='text' id='foo' value='I am not here.'>
</form>
</html>

函数testDA(){
如果(全部文件){
警报('Yes:'+document.all['foo'].value);
}否则{
警报('No:But…'+document.all['foo'].value);
}
var x=文件。所有[‘发薪日’];
x、 单击();
var y=单据所有(“发薪日”);
y、 单击();
文档。所有(‘发薪日’)。单击();
}
函数单击(){
警报(“单击”);
}
按钮1
按钮2
将此页面加载到IE11中,然后单击“按钮1”,您将看到一个警告对话框弹出,说“否:但是……我不在这里”。显示
文档。
if
中的所有
返回false,跳到else。然而,通过该属性的引用显然是有效的

请注意,标签为
button 2
且id为“payday”的按钮定义了
onclick
处理程序,它通过
文档在
testDA
函数中以编程方式引用。所有
都通过数组引用和函数调用引用,以及此处发布的OP的直接引用。在这个测试用例中,所有三个都可以工作——在每种情况下,为按钮定义的click函数都会启动


这一“功能”似乎是有意的,大概是出于兼容性的目的,但鉴于MS的文档明确声明它“已被删除”,我认为它可能会随着KB补丁或OS service pack的突发奇想而消失。警告JScript。

尽管MS文档明确表示它们不支持document.all,但一些编程测试显示IE11“安静地”仍然支持document.all

在IE11中,
文档。所有在适当的特性测试中使用的
本身都是“falsy”,这意味着它将无法通过特性存在测试-任何不受支持的特性都应该如此。但是,如果您直接使用它,例如document.all('fieldname'),您仍然会获得对ID为'fieldname'的元素的引用

考虑以下HTML代码段,该代码段在IE11 11.0.9600.17041版上进行了测试:

<html>
<script language="javascript">
   function testDA(){
      if (document.all){
         alert('Yes: ' + document.all['foo'].value);
      } else {
         alert('No: But...' + document.all['foo'].value);
      }

      var x = document.all['payday'];
      x.click();

      var y = document.all('payday');
      y.click();

      document.all('payday').click();
  }

  function clicked(){
      alert('clicked.');
  }
</script>
<form>
  <button onclick='testDA()'>Button 1</button>
  <button id='payday' onclick='clicked()'>Button 2</button>
  <input type='text' id='foo' value='I am not here.'>
</form>
</html>

函数testDA(){
如果(全部文件){
警报('Yes:'+document.all['foo'].value);
}否则{
警报('No:But…'+document.all['foo'].value);
}
var x=文件。所有[‘发薪日’];
x、 单击();
var y=单据所有(“发薪日”);
y、 单击();
文档。所有(‘发薪日’)。单击();
}
函数单击(){
警报(“单击”);
}
按钮1
按钮2
将此页面加载到IE11中,然后单击“按钮1”,您将看到一个警告对话框弹出,说“否:但是……我不在这里”。显示
文档。
if
中的所有
返回false,跳到else。然而,通过该属性的引用显然是有效的

请注意,标签为
button 2
且id为“payday”的按钮定义了
onclick
处理程序,它通过
文档在
testDA
函数中以编程方式引用。所有
都通过数组引用和函数调用引用,以及此处发布的OP的直接引用。在这个测试用例中,所有三个都可以工作——在每种情况下,为按钮定义的click函数都会启动

这一“功能”似乎是有意的,大概是出于兼容性的目的,但鉴于MS的文档明确声明它“已被删除”,我认为它可能会随着KB补丁或OS service pack的突发奇想而消失。警告JScript