Javascript Chome console.click()在一个网站上工作,但不能在另一个网站上工作。为什么和如何?

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) }; 现在,尝试单击页面上的任意位置。它现

当我打开Facebook并运行
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&amp;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次,所以这并不难。问题是,即使删除了这些文件(并保存了文件),您的第一个代码仍然不会触发输出。我会再次检查我的更改,我想我已经做了,希望不会忘记更新