Window.getComputedStyle没有在Firefox中实现interface Element错误

时间:2014-04-03 21:14:16

标签: javascript jquery html css

我想在HTML元素中添加一些数据,因此我使用了以下代码:

$("#bookListDiv").append(data.HTMLString);

并且一切正常,但是我想在显示此元素时添加fadein动画,所以我将其修改为:

$(data.HTMLString).hide().appendTo("#bookListDiv").fadeIn(1000);

动画正在使用Chrome,但在Firefox上我在控制台中看到以下错误: TypeError:Window.getComputedStyle的参数1未实现接口Element。 我使用的是jquery 1.8.2。

你能告诉我什么是错的吗?我假设有数据,但在第一种方法中,一切都正常。

4 个答案:

答案 0 :(得分:2)

如果您在getComputedStyle上致电<html>,也会收到此消息。它应该是常识,但我有一个递归函数,它使用此函数从内部元素冒出来,并在文档根目录结束时给出错误。

答案 1 :(得分:1)

我通过在fadeIn函数之前添加延迟找到了解决方案。 更改后的代码:

$(data.HTMLString).hide().appendTo("#bookListDiv").delay(100).fadeIn(1000);

正如我已经注意到,延迟中的数字应调整为数据大小,在我的情况下,7KB json数据可以正常工作,但我从1000开始。

答案 2 :(得分:1)

这个问题在jQuery中没有固定:http://bugs.jquery.com/ticket/12462

解决方法是在将HTML提供给jQuery之前将其包装在单个元素中。

答案 3 :(得分:0)

尝试确保您也使用正确的标记语法。

我使用AngularJS动态更改已禁用的按钮状态,同时隐藏/显示一个按钮...这使得Firefox出现了&#34; Window.getComputedStyle没有实现接口元素&#34 ;错误(但Safari / Chrome / IE)。

在我的情况下,真正的问题是我正在使用的标记没有匹配的开始/结束标记:<button ng-disabled="!x">Click</div>

纠正后:<button ng-disabled="!x">Click</button>事情很好。

奇怪的是,之前的两个答案都是部分解决方案:在我的隐藏/显示周围包含$ timeout,因为第一个发布的答案建议有效(但延迟必须是一个很大的数量)并将元素包装在一个额外的元素中同样,但不是我需要的实现(并创建了其他问题)。

我已尝试过,但根本无法获取代码示例来重现此问题。