LightWindow&IE7,"第444行-对象不支持此属性或者方法"
我刚刚收到并绕过了LightWindow和IE7的问题,这些问题在页面加载时在lightwindow.js的第444行引发JavaScript错误,声称"对象不支持此属性或者方法"。尽管在各个论坛上找到了各种各样的帖子,但我找不到Google的解决方案,因此,我将其发布在这里,希望对以后的人有所帮助。
许多人建议使用脚本文件的特定顺序,但是我已经在使用该顺序(原型,脚本,光窗)。
这些是我采取的似乎可以最终成功的步骤,我在这里仅将它们写为记录,因为我不知道,也没有时间测试哪些步骤专门"解决"了该问题:
- 将对lightwindow.js的调用移到页面底部。
- 将第444行更改为:
if(this._getGalleryInfo(link.rel)){
- 将第1157行更改为:
if(this._getGalleryInfo(this.element.rel)){
- 最后,我用" try / catch"块将第1417至1474行封闭起来(这很脏,我很抱歉),吞下了异常。
编辑:
我意识到这破坏了Firefox。现在在第445行中添加以下内容使其可以正常工作:try {gallery = this._getGalleryInfo(link.rel); }抓住(e){}`
这不是一个很好的解决方法,但是我的页面(其中包含一个不带" rel"标签的lightwindow链接,几个具有" rel"标签的lightwindow链接,以及一个" inline"链接)现在在IE7中可以正常工作。如果我们有任何关于此问题的内容或者对我给定解决方案的改进有疑问,请发表评论。
解决方案
回答
代替try..catch也许我们可以尝试使用
if( this && this._getGalleryInfo ) { //use the function }
我们也可以在使用它之前以相同的方式检查this.element.rel(if(this && this.element && this.element.rel)
...)。
似乎有一种情况是_getGalleryInfo或者this.element.rel尚未初始化,因此尚不存在。检查它是否存在,然后我是否使用它。
当然,我可能完全错了,唯一知道的方法是通过测试。
回答
我在Lightwindow 2.0,IE6,IE7,IE8(测试版)中遇到了同样的问题;我以以下方式解决了IE6,IE7,IE8(测试版)的问题。
代替:
如果(画廊= this._getGalleryInfo(link.rel))
我把443和1157行:gallery = this._getGalleryInfo(link.rel)
如果(画廊)
希望这会有所帮助!
回答
我将444行更改为:
var gallery = this._getGalleryInfo(link.rel)
然后将后续的比较语句更改为:
if(gallery.length > 0) { // Rest of code here...
...似乎已在IE6 +中对其进行了排序,并使其在Firefox等中正常工作。
我根本没有更改1157行,但是我没有阅读代码以查看我实际执行的操作,因此我无法对其相关性发表评论吗?
我怀疑?例子rel属性(Evoution?[man])中使用的IE可能会引起问题,但如果不花一些时间测试一些东西,我就不确定吗?
HTH。