MutationObserver 点击元素/类

Posted

技术标签:

【中文标题】MutationObserver 点击元素/类【英文标题】:MutationsObserver click element / class 【发布时间】:2020-07-16 03:02:35 【问题描述】:

我尝试在 transfermarketlist 中选择特定元素... 因此,我编辑了一个具有特定值的特定类,并从第一个 transfermarketlist 对象中删除了“选择”的当前类。 然后我将选定的类添加到特定元素,但它不能“.click”元素。需要模拟对对象的真实点击以使其工作并在网站上显示该对象

var observeTransferList = new MutationObserver(function (mutations) 
    mutations.forEach(function (mutation) 
        mutation.addedNodes.forEach(function (node) 
            if (node.nodeType === 1 && node.matches(".has-auction-data")) 
                $(node).css("height", "37");
                $(node).removeClass('selected');

                chrome.storage.sync.get(function (items) 
                    platform = items.platform;
                    percentage = items.percentage;
                    var playerData = getPlayerData(node, platform, percentage);


                    $(node).append(playerData);
                    if (playerData.colorPicked) 
                        $(node).css("backgroundColor", playerData.colorPicked); //can be "" by default, or green, yellow etc
                        //$(node).css("height", "37");
                        var price = Math.trunc(
                            parseInt(playerData.binValue.replace(/,/g, "")) / 0.949
                        );
                    


       // -------- CODE HERE -----------//
                    if (node.matches('[style*="background-color"]'))  //works
                        $(node).css("height", "60"); //works
                        $(node).addClass('selected')//works
                        //$(node).click('selected'); // not working
                        //$(node).click(); // not working either


                    

传输对象列表如下所示:

如果有任何问题,请直接问:)

【问题讨论】:

如果 click() 不起作用,这是解决方案。在元素上调度一个触摸事件。 ***.com/a/42447620 【参考方案1】:

尝试使用:

$(node).trigger('click');
$(node).trigger('click', ['selected']);

它的行为在所有浏览器中大体一致。 更多详情请参考thisjquery doc。

【讨论】:

显然不工作。要么在“如果匹配”语句中执行,要么在代码末尾使用单个语句。 webapp可以阻止点击吗? 你可能有别的想法? 您能否在您的代码中验证单击事件处理程序已附加到节点。当元素在屏幕上异步加载或在页面加载后创建时,此类元素不会附加事件处理程序。在这种情况下,点击它们不会做任何事情。 如何验证?哦,页面加载首先创建所有元素,然后突变观察器正在做它的工作 在 Firefox 中,您可以检查是否将正确的事件处理程序附加到这些节点。这是显示如何查看它的 giphy 快照。 gph.is/g/a99mGB8

以上是关于MutationObserver 点击元素/类的主要内容,如果未能解决你的问题,请参考以下文章

重新连接和断开 MutationObserver

利用MutationObserver对页面元素的改变进行监听

MutationObserver监听DOM元素结构变化和属性变化实例

H5特性 MutationObserver 监听元素 动态改变iframe高度

使用 MutationObserver 检测滚动高度变化?

MutationObserver 无法观察 textarea