Javascript Chome console.click()在一个网站上工作,但不能在另一个网站上工作。为什么和如何?
当我打开Facebook并运行Javascript Chome console.click()在一个网站上工作,但不能在另一个网站上工作。为什么和如何?,javascript,jquery,html,google-chrome-console,Javascript,Jquery,Html,Google Chrome Console,当我打开Facebook并运行document.getElementsByCassName(“\u 1htf')[2]时,单击()元素>事件监听器中列出的许多事件,但这些都不起作用,它只输出ƒfocus(){[native code]},但没有跳转到对话 谢谢,Whatsapp可能会阻止不可信的点击 要了解我在说什么,请首先在控制台中键入: document.onclick = (e) => { console.log(e.isTrusted) }; 现在,尝试单击页面上的任意位置。它现
document.getElementsByCassName(“\u 1htf')[2]时,单击()在控制台中,它跳转到对话并打开它\u 1htf
是我选择的一个随机类,每个会话条目都包含这个类
在访问对话时执行相同的操作,不会发生任何事情。我甚至不能点击这个网站上的“真实”按钮
我真的不明白为什么这在第一个网站上有效,但在第二个网站上不起作用
我能指出的网站之间有两个不同之处:
web.whatsapp.com
阻止浏览器的鼠标右键上下文菜单,并用自定义菜单覆盖它-messenger.com
不会这样做
messenger.com
的\u 1htf
元素包含导致对话的URI
(您可以在新选项卡中打开URI并在对话中结束)web.whatsapp.com
的元素不包含链接,但在单击时仍以某种方式打开对话
这是如何实现的?是否有一些Javascript正在侦听鼠标事件如果是,如何触发事件?我确实需要以编程方式“单击”对话。
这就是web.whatsapp.com
<div class="infinite-list-item infinite-list-item-transition" style="z-index: 200; height: 72px; transform: translateY(144px);">
<div tabindex="-1" class="chat-drag-cover">
<div class="active chat hover">
<div class="chat-avatar">
<div class="avatar icon-user-default">
<div class="avatar-body" style="cursor: pointer;"><img src="https://dyn.web.whatsapp.com/pp?t=s&u=4 . . . " draggable="false" class="avatar-image is-loaded"></div>
</div>
</div>
<div class="chat-body">
<div class="chat-main">
<div class="chat-title"><span class="emojitext ellipsify" dir="auto" title="CONVERSATION PARTNER"><!-- react-text: 92 -->CONVERSATION PARTNER<!-- /react-text --></span></div>
<div class="chat-meta"><span class="timestamp">21:16</span></div>
</div>
<div class="chat-secondary">
<div class="chat-status"><span class="last-msg" title="CONVERSATION MESSAGE"><span class="emojitext" dir="ltr"><!-- react-text: 28843 -->CONVERSATION MESSAGE<!-- /react-text --></span></span>
</div>
<div class="chat-meta"><span></span><span></span><span class="context-container"><div data-icon="down" role="button" class="img btn-context" style="width: 20px; opacity: 1;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21" width="21" height="21"><path fill-opacity=".31" d="M4.8 6.1l5.7 5.7 5.7-5.7 1.6 1.6-7.3 7.2-7.3-7.2 1.6-1.6z"></path></svg></div></span></div>
</div>
</div>
</div>
</div>
</div>
对话伙伴
21:16
对话信息
更新:我试图触发Chrome开发控制台>元素>事件监听器中列出的许多事件,但这些都不起作用,它只输出ƒfocus(){[native code]}
,但没有跳转到对话
谢谢,Whatsapp可能会阻止不可信的点击
要了解我在说什么,请首先在控制台中键入:
document.onclick = (e) => { console.log(e.isTrusted) };
现在,尝试单击页面上的任意位置。它现在应该在控制台中显示true
如果您尝试这样做:
document.getElementsByTagName('a')[0].click();
然后,isTrusted
将为false,因为它不是真正的单击
据我所知,你不能伪造值,因此你必须找到一种不同的方法来做你想做的事情(尝试检查你正在单击的对象上的任何click/mousedown事件处理程序,看看你是否可以直接调用某些函数)。当然他们可能检测到这不是真正的用户交互,但是,更有可能的是,目标元素位于单独的框架中,或者其他类似的原因导致其无法工作。首先确保document.getElementsByClassName
确实包含您的目标元素。它确实包含。我可以打印它的内容,当我给它添加一个打字错误时,它会给我一个无法读取属性
。Chrome控制台的一个可能的副本有一个部分,当你选择一个元素时,它可以帮助我。它的所有事件处理程序都将列在右侧,这样,您就可以找到click处理程序,如果可能的话,还可以访问它,如果没有,则复制它。document.onclick=(e)=>{console.log(e.isTrusted)}代码>不会在whatsapp网站上输出任何内容。然而,在messenger网站上确实如此。非常感谢你让我注意到这一点。正在尝试覆盖/欺骗该值Hahahhwell。。。不能,它是只读属性。我正在查看whatsapp,看看能不能找到什么。哈哈,伙计,我只是在开玩笑,搞些恶作剧。我现在正在做的是找到JS中出现的每一个isTrusted
,并将其删除/设置为true。它在加密内容附近的代码中也会出现5次,但每次都会出现5次,所以这并不难。问题是,即使删除了这些文件(并保存了文件),您的第一个代码仍然不会触发输出。我会再次检查我的更改,我想我已经做了,希望不会忘记更新