LightWindow& IE7,“第444行 - 对象不支持此属性或方法”

时间:2008-09-03 15:23:17

标签: javascript debugging internet-explorer-7 lightwindow

我刚收到并绕过LightWindow和IE7的问题,在页面加载时,它会在lightwindow.js的第444行引发JavaScript错误,声称object does not support this property or method。尽管在各种论坛上发现了各种帖子,但我找不到谷歌的结果有一个解决方案,所以我在这里发帖,希望它能帮助某人/我自己。

许多人提出了脚本文件的特定顺序,但我已经在使用这个顺序(原型,scriptaculous,lightwindow)。

我采取的这些步骤似乎终于有效了,我在这里写的只是作为记录,我不知道也没有时间测试哪些特别“修复”了这个问题:

  1. 将对lightwindow.js的调用移至页面底部。
  2. 将第444行更改为:if (this._getGalleryInfo(link.rel)) {
  3. 将第1157行更改为:if (this._getGalleryInfo(this.element.rel)) {
  4. 最后,我附上(这是肮脏的,我的道歉)第1417至1474行,带有try/catch块,吞噬了异常。
  5. 编辑:

    我意识到这打破了Firefox。将以下内容添加到第445行现在可以使其正常工作 - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

    这不是一个非常好的修复,但我的页面(包含没有“rel”标签的lightwindow链接,几个有“rel”标签的lightwindow链接,以及一个“内联”链接)现在在IE7中工作得很好。如果您有任何关于此问题或我的解决方案的问题/改进的问题,请发表评论。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用

代替try..catch
if( this && this._getGalleryInfo )
{
    //use the function

}

你也可以在使用之前以同样的方式检查 this.element.rel if(this && this.element && this.element.rel) ...)。

看起来有一种情况是_getGalleryInfothis.element.rel尚未初始化,因此它尚不存在。检查它是否存在然后我是否使用它。

当然我可能完全错了,唯一知道的方法就是测试它。

答案 1 :(得分:0)

我遇到了与Lightwindow 2.0,IE6,IE7,IE8(beta)相同的问题;我通过以下方式解决了IE6,IE7,IE8(beta)。

而不是:
if(gallery = this._getGalleryInfo(link.rel))
我列出了443和1157行:
gallery = this._getGalleryInfo(link.rel)
if(gallery)

希望这会有所帮助!

答案 2 :(得分:0)

我通过将第444行改为:

来解决这个问题
var gallery = this._getGalleryInfo(link.rel)

然后将后续比较语句更改为:

if(gallery.length > 0)
{
    // Rest of code here...

...似乎已经在IE6 +中对其进行了排序,并使其在Firefox等中保持工作状态。

我根本没有改变第1157行,但是我没有看过代码,看看我实际上做了什么,所以我不能评论它的相关性?

我怀疑?示例中使用的rel属性(Evoution?[man])可能会导致IE出现问题但是没有花一些时间测试一些东西,我不能确定?

HTH。