栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

名为“ animate”的JS函数在Chrome中不起作用,但在IE中起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

名为“ animate”的JS函数在Chrome中不起作用,但在IE中起作用

问题在于,由于您使用事件处理程序的content属性,因此您的全局函数…

window.animate

被…遮盖

Element.prototype.animate

…这是最近在Web Animations中引入的:

5.21

Element
接口扩展

由于DOM元素可能是动画的目标,因此Element 接口[
DOM4 ]扩展如下:

 Element implements Animatable;

这允许以下类型的用法。

 elem.animate({ color: 'red' }, 2000);

在获取事件处理程序的当前值的[步骤10]中说明了此行为:

词汇环境范围

  1. 如果 H
    是元素的事件处理程序,则让 Scope 为NewObjectEnvironment( document全局环境 )的结果。

否则, H

Window
对象的事件处理程序:让 Scope全局环境

  1. 如果 表单所有者 不为null,则使 Scope 为NewObjectEnvironment( form owner
    Scope )的结果。

  2. 如果 element 不为null,则让 Scope 为NewObjectEnvironment( element,Scope
    )的结果。

注意: _NewObjectEnvironment()是在ECMAscript版本5第10.2.2.3节中定义的NewObjectEnvironment(O,E)
这意味着目标元素的范围会覆盖全局范围。

因此,您可以

  • 重命名您的功能

    function animate__() {

    var div = document.getElementById(‘demo’);

    div.style.left = “200px”;

    div.style.color = “red”;

    }

    #demo {

    position: absolute;

    }

    <p id='demo' onclick="animate__()">Click me</p>
  • 使用

    window.animate
    (假设
    window
    尚未被遮盖):

    <p id='demo' onclick="window.animate()">Click me</p>function animate() {

    var div = document.getElementById(‘demo’);

    div.style.left = “200px”;

    div.style.color = “red”;

    }

    #demo {

    position: absolute;

    }

    <p id='demo' onclick="window.animate()">Click me</p>
  • 使用事件处理程序IDL属性代替内容属性one:

    document.getElementById('demo').onclick = animate;function animate() {

    var div = document.getElementById(‘demo’);

    div.style.left = “200px”;

    div.style.color = “red”;

    }

    document.getElementById(‘demo’).onclick = animate;

    #demo {

    position: absolute;

    }

    <p id='demo'>Click me</p>
  • 使用事件侦听器代替事件处理程序:

    document.getElementById('demo').addEventListener('click', animate);function animate() {

    var div = document.getElementById(‘demo’);

    div.style.left = “200px”;

    div.style.color = “red”;

    }

    document.getElementById(‘demo’).addEventListener(‘click’, animate);

    #demo {

    position: absolute;

    }

    <p id='demo'>Click me</p>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/635263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号