Javascript 未捕获类型错误:无法读取属性';单击';空的
我试图单击类名为(xyz)的divJavascript 未捕获类型错误:无法读取属性';单击';空的,javascript,Javascript,我试图单击类名为(xyz)的div document.querySelector('.header search wrap')。单击() 只要您运行 document.querySelector('.xyz'); 如果它说null,这意味着在那个时间点没有类为xyz的元素,所以在null上调用click()会导致错误 如果元素是iframe中的子元素,则无法通过查询文档(如document.querySelector())来选择元素;如果需要,您必须检索其文档: 但另一件事是,您无法访问不在
document.querySelector('.header search wrap')。单击()代码>
只要您运行
document.querySelector('.xyz');
如果它说null,这意味着在那个时间点没有类为xyz的元素,所以在null上调用click()会导致错误 如果元素是iframe
中的子元素,则无法通过查询文档(如document.querySelector()
)来选择元素;如果需要,您必须检索其文档
:
但另一件事是,您无法访问不在同一来源的iframe
(我想,您还没有指定),因为“同一来源策略”适用于:
关于你的statament:
当您打开控制台时,它将显示未捕获类型错误:无法
读取null的属性“click”,但在搜索所有
.标题搜索在“元素”选项卡中换行,然后再次执行
document.querySelector('.header search wrap')。单击();它将显示
你只是没有定义这意味着它可以工作
这是因为当您检查所述iframe
中的元素时,DevTools的“上下文”(context)会更改为iframe
,您可以自由使用document.querySelector()
。如果没有这样的元素,document.querySelector('.xyz')的结果
将为null
,这将导致该错误,因为您的代码实际上为null。单击()。您确定页面中有这样的元素吗?你能创建一个工作示例吗?snippet/jsfiddle…你能用HTML标记更新你的问题吗?听起来你好像在加载页面之前加载了脚本。请尝试将脚本放在结束正文标记之前,或将其放在window.onload=function(){/*此处*/}window.onload=function(){document.querySelector('.xyz')。单击();}。.header search wrap
不在同一文档中。它位于另一个文档(即iframe
)中。当您打开控制台时,它将显示未捕获的TypeError:无法读取null的属性“click”,但当您搜索“全部”时。标题搜索在元素选项卡中换行,然后再次执行document.querySelector(“.header搜索换行”)。单击();它只会向您显示未定义,这意味着它可以工作。因此,没有办法做到这一点吗?@DavidCring如果您不在同一个域上:不是真的,至少对gammerson.com来说,如果其他域允许通过访问控制允许源站
标题进行交叉源站,那么它们也可以工作。