Ich weiß, dass ich focus() aufrufen kann, aber mein Ziel ist es, „dispatchEvent“ zu verwenden Nur und Mausereignisse.
Dies kommt von einer großen App, bei der ich einen transparenten IFrame über die gesamte Seite habe (stellen Sie sich eine transparente Ebene mit einigen benutzerdefinierten Inhalten über Google Maps vor). Der Inhalt des IFrames kann von einem Dritten stammen, der sich dafür entscheiden kann, entweder das Klickereignis zu verarbeiten oder es an das übergeordnete Element weiterzugeben (ähnlich wie ein Aufsprudeln, aber über Frame-Grenzen hinweg).
Dabei ist mir aufgefallen, dass einige Elemente auf der übergeordneten Seite (wie Textfelder und Schaltflächen) verhalten sich nicht so, wie ich es normalerweise erwarten würde, daher habe ich dieses kleine Beispiel erstellt, um das Problem zu veranschaulichen.
Code: Select all
function handleClick(event)
{
let textbox = document.getElementById('text');
let rect = textbox.getBoundingClientRect();
let newEvent = new MouseEvent('click', {
clientX: rect.x + 5,
clientY: rect.y + 5,
x: rect.x + 5,
y: rect.y + 5,
pageX: rect.x + 5,
pageY: rect.y + 5
});
textbox.dispatchEvent(newEvent);
}
Code: Select all
Click