Lotus Notes和IE问题“document.all(”RunAgentCreateAns“)。click()在IE11中不起作用”

时间:2014-05-12 12:42:01

标签: javascript lotus-notes internet-explorer-11

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

无效的JS代码

document.all("RunAgentCreateAns").click()

RunAgentCreateAns 是Lotus Notes中的按钮ID。

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

2 个答案:

答案 0 :(得分:5)

IE11不支持document.all()。请改用document.getElementById()。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx

答案 1 :(得分:0)

虽然MS文档明确表示他们不支持document.all,但是一些程序化测试显示IE11“悄然”仍然 支持document.all,显然。

在IE11中,document.all本身就像在正确的功能测试中使用的那样,是'假的',这意味着它将无法通过功能存在测试 - 因为任何不支持的功能都应该如此。但是,如果您直接使用它,例如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>

将此页面加载到IE11中,然后单击“按钮1”,您将看到一个警告对话框,弹出“否:但是......我不在这里。”。这表明document.all中的if返回false,绊倒其他地方。然而,通过该财产的引用显然有效。

请注意,标有Button 2且ID为'payday'的按钮定义了onclick处理程序,并通过testDAdocument.all函数中以编程方式引用该按钮通过数组引用和函数调用引用,以及OP在此处发布的方式的直接引用。在这个测试案例中,所有三个工作 - 在每种情况下,为按钮定义的点击功能触发。

看起来这个“功能”可能是故意的(?)用于兼容性目的,但鉴于MS'docs明确表示它已被删除,“对我来说,它可能会在KB补丁或操作系统的奇思妙想中消失服务包。警告jscriptor。