Google文档-以编程方式将鼠标单击发送到大纲窗格中的项目

goo*_*dev 4 javascript google-docs google-chrome-extension

在Google文档中,您可以打开大纲窗格并查看文档中的所有标题,也可以单击标题,然后视图将滚动到标题。

我的问题是如何在Chrome扩展程序中使用JS编程模拟鼠标单击,以将视图滚动到所需的标题?

我尝试了以下代码,但没有遇到任何意外:

// usage: eventFire(document.getElementById('mytest1'), 'click');
function eventFire(el, etype) {
    if (el.fireEvent) {
        el.fireEvent('on' + etype);
    } else {
        var evObj = document.createEvent('Events');
        evObj.initEvent(etype, true, false);
        el.dispatchEvent(evObj);
    }
}
Run Code Online (Sandbox Code Playgroud)

标头是带有的div元素class="navigation-item-content navigation-item-level-2",当我查看chrome开发工具>事件监听器时,这些元素没有任何事件监听器。

Ivá*_*oko 5

这个答案

尝试使用此代码;它通过快速连续的mousedown,mouseup和在元素中心触发的click事件模拟在元素上的鼠标左键单击:

var simulateMouseEvent = function(element, eventName, coordX, coordY) {
  element.dispatchEvent(new MouseEvent(eventName, {
    view: window,
    bubbles: true,
    cancelable: true,
    clientX: coordX,
    clientY: coordY,
    button: 0
  }));
};

var elementToClick = document.querySelector('#mytest1');

var box = elementToClick.getBoundingClientRect(),
    coordX = box.left + (box.right - box.left) / 2,
    coordY = box.top + (box.bottom - box.top) / 2;

simulateMouseEvent (elementToClick, "mousedown", coordX, coordY);
simulateMouseEvent (elementToClick, "mouseup", coordX, coordY);
simulateMouseEvent (elementToClick, "click", coordX, coordY);
Run Code Online (Sandbox Code Playgroud)