当前位置: 首页 > 知识库问答 >
问题:

无法让img处理ie中的事件

慕铭
2023-03-14

我最近在做一个程序,可以让用户上传自己的肖像。所以我使用文件输入并重写onchange函数。在onchange函数中,我新建了一个image对象,当image对象准备就绪时,我使用图像的宽度和高度以及src来设置IMG的拟合宽度和高度。下面的代码在chrome中运行良好,但在IE10中失败了。addEventListener和attachEvent在IE10中均失败。我只想让img处理onload事件。我怎么能那样做?

function setImage(file){
var tempImg = document.createElement('img');
tempImg.addEventListener('load', function(){
        alert('success');

        var isExist = false;
        var imgDiv = document.getElementsByClassName('img-border')[0];

        if (document.getElementsByClassName('photo-canvas').length == 1){
            var canvas = document.getElementsByClassName('photo-canvas')[0];            
            isExist = true;
        }
        else{
            var canvas = document.createElement('canvas');
        }

        var xTimes = tempImg.width / portraitWidth;
        var yTimes = tempImg.height / portraitWidth;

        var realTimes = xTimes > yTimes ? xTimes : yTimes;

        realWidth = tempImg.width / realTimes;
        realHeight = tempImg.height / realTimes;

        centerX = realWidth / 2;
        centerY = realHeight / 2;

        var realImg = document.getElementsByClassName('temp-photo')[0];

        realImg.style.width = realWidth + 'px';
        realImg.style.height = realHeight + 'px';
        realImg.style.marginLeft = -realWidth / 2 + 'px';
        realImg.style.marginTop = -realHeight / 2 + 'px';
        realImg.src = null;
        realImg.src = tempImg.src;

        canvas.width = realWidth;
        canvas.height = realHeight;     
        canvas.style.marginLeft =  -realWidth / 2 + 'px';
        canvas.style.marginTop = -realHeight / 2 + 'px';

        if (!isExist){
            canvas.onload = function(){
                draw(this);
            }
            imgDiv.appendChild(canvas);
        }
        else
            draw(canvas);           
    }, false); 

if (document.all){
    tempImg.src = file.value;
    var temp = document.getElementsByClassName('temp-photo')[0];
    temp.src = file.value;
}
else{
    var image = file.files.item(0);

    if (typeof(image.getAsDataURL) != 'undefined')  
        tempImg.src = image.getAsDataURL();
    else
        tempImg.src = window.webkitURL.createObjectURL(image);
}       

}

共有1个答案

阎德业
2023-03-14

如果要在IE中上传本地文件,则必须将站点添加到受信任列表中。

 类似资料:
  • 本文向大家介绍W3C的事件处理和IE的事件处理有哪些区别?相关面试题,主要包含被问及W3C的事件处理和IE的事件处理有哪些区别?时的应答技巧和注意事项,需要的朋友参考一下 绑定事件 W3C addEventListener ;IE attachEvent 移除事件 W3c removeEventListner;IE detachEvent 阻止默认事件 W3C e.preventDefault;

  • 我已经回顾了其他几个类似的问题,但我读到的那些问题并没有帮助解决我的问题。我的目标是基于int用户输入打印菜单值,并继续提供选择,直到用户点击6退出。这是我的代码(我是Java新手)。

  • 本文向大家介绍C#处理Access中事务的方法,包括了C#处理Access中事务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#处理Access中事务的方法。分享给大家供大家参考。具体如下: Access不能像SQL server一样直接执行多条语句,但是把多条语句绑成事务还是可以一起执行的. 所谓事务,就是把多件事情当做一件事情来处理。也就是大家同在一条船上! 由一个事务来完成

  • 然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在v-on指令中是不可行的。因此v-on还可以接收一个需要调用的方法名称。 示例: <div id="example-2"> <!-- `greet` 是在下面定义的方法名 --> <button v-on:click="greet">Greet</button> </div> var example2 = ne

  • 我想在React中使用TypeScript创建一个自定义组件,它本质上是一个组合框,具有自动完成/搜索功能,连接到自己的远程存储。我想做的是发送一个“onSelect”事件,这样我就可以在我的应用程序中使用该组件的任何地方接收选定的项目。 使用远程商店进行自动完成/搜索很容易,但React组件的工作让我感到困惑。我仍然在学习这两种方法,所以我可能在爬之前就尝试着走路,但我不想一开始就制造混乱,因为

  • 我在主页组件中有这个代码,当按下向下/向上箭头键时,什么也没有发生。我刚刚意识到,当用ctrl键按箭头键时,eventhandler可以正常工作。我到处找,但什么也没找到。有人能帮忙吗?我的浏览器是Chrome v.96。React版本17.0.2,节点v.16.13.1