1

在IE6和IE5.5中,我在页面中看到了一个非常有趣的行为。我有一个脚本(如果你知道的话可以选择超级脚本),这样可以在处理IE6和IE5.5时使PNG恢复业务。在执行此过程中,我想将背景更改为使用资源管理器Alpha过滤器(如果启用了Javascript,请使用过滤器,否则坚持为纯白色)。Javascript if if拒绝从外部脚本正确加载IE6 IE5.5

我通过这样做:

if(document.getElementById('transparency') != null) 
      document.getElementById('transparency').style.filter= "alpha(opacity=60)"; 

...透明度问题的对象的ID。

把这个放在HTML页面的末尾(或者'透明'被启动后的任何地方)导致脚本工作。将它放在外部脚本的最后(延迟)会导致过滤器不被应用。

但是,当我删除if语句,并告诉浏览器使用它的过滤器的作品(但只有少数页面已获得'透明度'ID)。

我试图通过使用警告框不同地应用if语句,并尝试使用!= null== null,我什么都没有。

这让我很好奇,所以我测试了这一点:

var tt = 5; 
if(tt == 5)document.getElementById('transparency').style.filter= "alpha(opacity=60)"; 

与错误屏幕说

TT给了一个更奇怪的结果是不确定的

所有这一切在IE 7及以上版本中运行完美...

我意识到这真的是两个不同的问题,但仍然... 任何人都可以给我一个线索,了解发生了什么?

回答

1

这是行不通的?

var t = document.getElementById('transparency'); 
if (t && t.style) t.style.filter="alpha(opacity=60)"; 

这个怎么样?

try { 
    document.getElementById('transparency').style.filter= "alpha(opacity=60)"; 
} catch (e) { } 
+0

@no谢谢!!!工作完美,但我仍然很好奇,为什么和如何?你愿意给我一个简短的解释吗? :) 谢谢!! – 2010-09-07 20:29:12

+0

@no是两个都很好..再次感谢!真的很想听听为什么虽然......不能真正做到这一点:( – 2010-09-07 20:39:16

+0

我很想解释它,但我真的不知道为什么他们工作...或者,我应该说,我不'我知道为什么你发布的代码失败了,我只是按照我平常写的方式重写了你的代码,希望(并且有些期待)它会起作用。如果其他人能够听到解释,我也会很感兴趣给一个 – 2010-09-07 21:47:42