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

许多人建议脚本文件的特定顺序,但我已经在使用这个顺序(prototype、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 链接和一个“内联”链接)现在在 IE7 中工作得很好。如果您对这个问题或我给定解决方案的问题/改进有任何补充,请发表评论。

有帮助吗?

解决方案

我通过将第 444 行更改为:

var gallery = this._getGalleryInfo(link.rel)

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

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

...这似乎在 IE6+ 中对其进行了排序,并使其在 Firefox 等中正常工作。

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

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

HTH。

其他提示

除了 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(测试版)按照以下方式解决。

代替:
 if(gallery = this._getGalleryInfo(link.rel))
我添加了第 443 行和第 1157 行:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

希望这会有所帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top