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

xfb7svmp  于 2022-12-12  发布在  jQuery
关注(0)|答案(4)|浏览(123)

我正在使用Asp.Net2.0,我正在尝试使用ASP.NET拖放文件。对于此过程,我使用以下js

<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>

这就是错误出现的原因

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

我正在使用IE11
所以我用了一个密码

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

它不工作
我的剧本是

<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>

我的aspx页面是

<body>
<form id="form1" runat="server">
<center>
  <div id="box">Drag & Drop files from your machine on this box.</div>
  <br />
  <input id="upload" type="button" value="Upload Selected Files" />
</center>
</form>

但这个应用程序拖放文件在Chrome和Firefox中工作正常,只有在IE中才有问题
建议我去找个解决方案。先谢谢了。

l0oc07j2

l0oc07j21#

从met标记中取出ie11,并添加下面的代码,here对此进行了解释。

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

mzmfm0qo2#

IE中的文档模式设置为什么?
按下F12,你会看到一个带有数字或单词edge的下拉菜单,确保它被设置为edge。即使你使用 meta标签来设置文档模式,如果你以前把它设置为其他任何东西,它也会覆盖它。

jucafojl

jucafojl3#

编辑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");
};
8gsdolmq

8gsdolmq4#

这是由于web.config文件中的兼容性问题。

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

相关问题