JS:无法在'Window'上执行'getComputedStyle':参数不是'Element'类型

Kwi*_*iki 21 javascript mediawiki typeerror visual-editor getcomputedstyle

简而言之:我试图理解这个TypeError的含义:无法在'Window'上执行'getComputedStyle':参数1不是'Element'类型在午餐Mediawiki的VisualEditor时会出现错误,如下所示:

http://www.wiki.org.il/index.php?title=new-page&veaction=edit

该错误无法匿名创建新页面或编辑Wiki.但是,使用不同的皮肤时,错误消失:

http://www.wiki.org.il/index.php/Main_Page?useskin=vector

维基在1.25alpha上运行.

Ani*_*ish 16

我有同样的错误显示.当我用普通JavaScript替换jQuery选择器时,错误得到了修复.

var this_id = $(this).attr('id');
Run Code Online (Sandbox Code Playgroud)

更换:

getComputedStyle( $('#'+this_id)[0], "")
Run Code Online (Sandbox Code Playgroud)

附:

getComputedStyle( document.getElementById(this_id), "")
Run Code Online (Sandbox Code Playgroud)

  • getComputedStyle(document.getElementById(this_id))将不起作用.得到同样的错误 (4认同)
  • 可能是因为您的`getComputedStyle(...)`代码运行ID为`this_id`的元素时,DOM中实际上并不存在该元素。如果您还处理添加/删除元素。 (2认同)

Rys*_*zyk 6

错误消息表明要求getComputedStyle参数为Element类型。您收到它是因为参数的类型不正确。

最常见的情况是您尝试传递一个不存在的元素作为参数:

my_element = document.querySelector(#non_existing_id);
Run Code Online (Sandbox Code Playgroud)

现在该元素是null,这将导致上述错误:

my_style = window.getComputedStyle(my_element);
Run Code Online (Sandbox Code Playgroud)

如果无法始终正确获取元素,则可以使用以下命令来结束函数(如果querySelector未找到任何匹配项):

if (my_element === null) return;
Run Code Online (Sandbox Code Playgroud)


Tgr*_*Tgr -41

错误消息非常简单:getComputedStyle期望一个Element作为其第一个参数,并且向它传递了其他内容。

如果您真正需要的是调试皮肤的帮助,那么您应该付出更多努力来隔离错误。

  • 我同意你的观点,但这应该是评论而不是答案。 (6认同)