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监听DOM元素结构变化和属性变化实例