JavaScript运行时错误:对象不支持属性或方法' addEventListener

时间:2015-07-09 13:46:30

标签: javascript jquery

使用Asp.Net 2.0,我正在尝试使用asp.net拖放文件。 对于这个过程我正在使用以下js'

i2

这就是错误的原因

<script src="../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../Scripts/modernizr-2.5.3.js" type="text/javascript"></script>

我正在使用IE11

所以我使用了一个代码

JavaScript runtime error: Object doesn't support property or method 'addEventListener 

它不能正常工作

我的脚本是

<meta http-equiv="X-UA-Compatible" content="IE=edge;" />

我的aspx页面是

 <script type="text/javascript" language="javascript">



    var selectedFiles;

      $(document).ready(function () {
alert("");
        if (!Modernizr.draganddrop) {
        //alert("2");
          alert("This browser doesn't support File API and Drag & Drop features of HTML5!");
          return;
        }

        var box;
        box = document.getElementById("box");
       alert(box);
        box.addEventListener("dragenter", OnDragEnter, false);
        box.addEventListener("dragover", OnDragOver, false);
        box.addEventListener("drop", OnDrop, false);

        $("#upload").click(function () {
          var data = new FormData();
          for (var i = 0; i < selectedFiles.length; i++) {
            data.append(selectedFiles[i].name, selectedFiles[i]);
          }
          $.ajax({
            type: "POST",
            url: "FileHandler.ashx",
            contentType: false,
            processData: false,
            data: data,
            success: function (result) {
              alert(result);
            },
            error: function () {
              alert("There was error uploading files!");
            }
          });
        });

      });;

      function OnDragEnter(e) {
        e.stopPropagation();
        e.preventDefault();
      }

      function OnDragOver(e) {
        e.stopPropagation();
        e.preventDefault();
      }

      function OnDrop(e) {
        e.stopPropagation();
        e.preventDefault();
        selectedFiles = e.dataTransfer.files;
        $("#box").text(selectedFiles.length + " file(s) selected for uploading!");
      }



    </script>

但是这个应用程序拖放文件在chrome和firefox中运行良好 IE中唯一的问题

建议我找到解决方案。 提前谢谢。

4 个答案:

答案 0 :(得分:0)

从met标签中取出ie11,然后添加以下代码。这解释为here

/* IE11 Fix for SP2010 */
if (typeof UserAgentInfo.strBrowser !== 'undefined' && !window.addEventListener) {
     UserAgentInfo.strBrowser=1;
}

答案 1 :(得分:0)

您在IE中设置的文档模式是什么?

按F12键,您会看到带有数字或字边缘的下拉列表,请确保将其设置为边缘。即使您以前将元标记设置为其他任何内容,您也可以使用元标记设置文档模式。

答案 2 :(得分:0)

编辑plunkr以查看它失败的地方 - 我没有手持jQuery 1.7.2但是在Internet Explorer 11中测试过并且看不到该错误。我正在使用click事件,因为它是一个在浏览器中生成的更简单的事件,它是抛出的addEventListener方法。

http://embed.plnkr.co/Smm421v5In2YYJAJXNTW/preview

<!DOCTYPE html>
<html>

  <meta http-equiv="X-UA-Compatible" content="IE=edge;" />
  <head>
    <meta charset="utf-8" />
    <title></title>
    <link data-require="bootstrap-css@3.0.0-rc2" data-semver="3.0.0-rc2" rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap.min.css" />
    <link rel="stylesheet" href="style.css" />
    <script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script data-require="bootstrap@3.0.0-rc2" data-semver="3.0.0-rc2" src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/js/bootstrap.min.js"></script>
    <script src="script.js"></script>
  </head>
  <body>
    <h1>Hello Plunker!</h1>
    <div id="box" style="height: 100px; background-color: red">Click area</div>
  </body>
</html>

......并在剧本中......

'use strict';
/* global $ */


console.log("Hey!");
$(document).ready(function() {
  var box;
  box = document.getElementById("box");
  console.log(box);
  box.addEventListener("click", OnClick, false);
});    

var OnClick = function() {
  console.log('in OnClick');
  $("#box").text("Clicked");
};

答案 3 :(得分:0)

这是由于下面在web.config文件中添加了兼容性问题

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="X-UA-Compatible" value="IE=EmulateIE9" />
        </customHeaders>
    </httpProtocol>
</system.webServer>