我在函数中使用以下JS代码注销Chrome上的网站:
var docLogout = document.querySelector('.submit.logout');
docLogout.click();
我收到错误消息:
'Uncaught TypeError: Cannot read property 'click' of undefined'
这是因为我需要确保按钮的类首先存在,然后按照我认为的以下步骤进行操作:
使用“选择页面中的元素进行检查”按钮(开发人员工具最左侧的第一个按钮)
单击注销按钮进行检查
<button type="submit" class="submit logout">Log out</button>
行如何避免通过上述步骤先了解元素的手动步骤?当网站加载其他页面时,是否有一种方法可以首先扩展所有DOM元素,以避免出现“无法读取未定义属性'单击'的未定义'”错误,而无需任何人为干预就首先使用“检查元素”按钮的情况?
注意:至少要说明已完成的投票,以便我与您互动!!!!!
答案 0 :(得分:1)
docLogout
是undefined
,这意味着文档中没有类submit
和logout
的元素
如果可以手动检查页面并找到<button class="submit logout">
,则代码可能是在<button>
附加到DOM
之前运行的。
解决方案:确保在DOM
附加了<button>
后,代码正在运行。
一种执行此操作的方法是将<script>
放在</body>
结束标记之前,例如
<!doctype html>
<html>
<head></head>
<body>
<button class="submit logout">Logout</button>
<script>
/* button is attached to the DOM at this point */
const docLogout = document.querySelector('.submit.logout')
docLogout.click()
<script>
</body>
</html>
另一种解决方案是在window
的{{1}}事件之后运行代码,例如,
load
如果可能的话,我建议给按钮一个window.addEventListener('load', () => {
document.querySelector('.submit.logout').click()
})
并使用id
答案 1 :(得分:-1)
似乎您没有正确使用选择器。 您可以将中断放在此行上,检查为什么它为null / undefined 使用f12转到源代码并搜索js文件,然后在此给定行上放置断点以对其进行调试。