Internet explorer 让Google Chrome忽略IE Javascript

Internet explorer 让Google Chrome忽略IE Javascript,internet-explorer,google-chrome,javascript,Internet Explorer,Google Chrome,Javascript,我正在使用javascript创建一个幻灯片来淡出图像。不久前,我发现要改变图像的不透明度,我必须使用不同的API,这取决于页面是在Firefox还是IE中查看 火狐: img.style.opacity = [value 0 to 1]; 即: 所以,目前,我使用作为IE的代码。这是 问题是:Chrome认为我的代码是有效的,而事实并非如此 如何让Chrome忽略中的代码?或者如何使我的不透明代码跨浏览器?使用库,例如或。它们具有跨浏览器动画和内置CSS。如果您不想使用jQuery之类的库,

我正在使用javascript创建一个幻灯片来淡出图像。不久前,我发现要改变图像的不透明度,我必须使用不同的API,这取决于页面是在Firefox还是IE中查看

火狐:

img.style.opacity = [value 0 to 1];
即:

所以,目前,我使用
作为IE的代码。这是

问题是:Chrome认为我的
代码是有效的,而事实并非如此


如何让Chrome忽略
中的代码?或者如何使我的不透明代码跨浏览器?

使用库,例如或。它们具有跨浏览器动画和内置CSS。

如果您不想使用jQuery之类的库,您应该使用条件注释来定位IE:

<script type="text/javascript" src="scripts.js"></script>
<!--[if IE]>
    <script type="text/javascript" src="ie-only-scripts.js"></script>
<![endif]-->
最后,在
ie only scripts.js
文件中覆盖该函数定义:

function setOpacity(element, value) {
    element.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=" + (value * 100) + ")";
}

由于IE是唯一加载第二个脚本文件的浏览器,因此它有自己的特殊版本的函数,而其他浏览器可以正常工作;-)

另一种可能是在javascript函数中检查IE或Firefox使用的特定属性是否存在,然后设置适当的属性。例如:

function setOpacity(element, value) {
    if (typeof (element.style.opacity) != "undefined") {
        // This is for Firefox, Safari, Chrome, etc.
        element.style.opacity = value;
    }
    else if (typeof (element.style.filter) != "undefined") {
        // This is for IE.
        element.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + (value * 100) + ")";
    }
}

如果某个浏览器恰好同时具有这两个属性,则必须注意。在这种情况下,Google Chrome确实有一个过滤器属性和一个不透明度属性,但IE没有一个不透明度属性。因此,上面if子句的顺序将适用于两种浏览器。

这正是我所要求的。谢谢虽然为一个简单的不透明动画增加50或60 kB的开销似乎有点过分,但我还是对其进行了升级,因为我以前使用过jQuery,而且它非常棒。谢谢我同意单凭那件事就太过分了。在我看来,无论如何,使用图书馆是一件好事。它将使所有的事件挂钩等更干净。但话说回来,如果您的站点上没有那么多Java脚本。。视情况而定:)
function setOpacity(element, value) {
    element.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=" + (value * 100) + ")";
}
function setOpacity(element, value) {
    if (typeof (element.style.opacity) != "undefined") {
        // This is for Firefox, Safari, Chrome, etc.
        element.style.opacity = value;
    }
    else if (typeof (element.style.filter) != "undefined") {
        // This is for IE.
        element.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + (value * 100) + ")";
    }
}