0

我刚刚收到并绕过了 LightWindow 和 IE7 的一个问题,在页面加载时,它在 444 行抛出一个 JavaScript 错误lightwindow.js,声称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,吞下了异常。

编辑:

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

这不是一个很好的修复,但我的页面(其中包含一个没有“rel”标签的 lightwindow 链接、几个确实有“rel”标签的 lightwindow 链接和一个“inline”链接)现在在 IE7 中工作得很好。如果您对此问题有任何补充或对我给定解决方案的问题/改进,请发表评论。

4

3 回答 3

1

而不是 try..catch 也许你可以尝试使用

if( this && this._getGalleryInfo )
{
    //use the function

}

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

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

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

于 2008-09-06T03:21:28.263 回答
0

我在使用 Lightwindow 2.0、IE6、IE7、IE8(测试版)时遇到了同样的问题;我通过以下方式解决了 IE6、IE7、IE8(测试版)。

而不是:
 if(gallery = this._getGalleryInfo(link.rel))
我放在第 443 和 1157 行:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

希望这会有所帮助!

于 2009-02-27T15:28:15.243 回答
0

我通过将第 444 行更改为:

var gallery = this._getGalleryInfo(link.rel)

然后将后面的比较语句改为:

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

...似乎已经在 IE6+ 中对其进行了排序,并使其在 Firefox 等中运行。

我根本没有更改第 1157 行,但我还没有阅读代码以了解我实际做了什么,所以我不能评论它的相关性?

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

HTH。

于 2009-03-09T18:53:39.613 回答