Не знаю, возможно ли это вообще!
Но я хочу автоматически нажимать на элемент на внешнем сайте.
Требуется пройти онлайн-обучение, нажав на следующую страницу, чтобы пройти все главы. Тренинг требует лишь посещения огромного количества разделов. Поскольку у меня нет доступа к коду этого сайта,
Поэтому я поместил сайт в iframe и поместил прозрачный div поверх области интерактивного элемента с помощью
pointer-events:none
Я также могу добиться автоматического щелчка по моему элементу div с помощью
var time=5;
interval = setInterval(function() {
time--;
document.getElementById('Label1').innerHTML = "" + time + " seconds"
if (time == 0) {
// stop timer
clearInterval(interval);
// click
document.getElementById('clickdiv').click();
}
}, 1000)
Но проблема заключается в том, чтобы щелкнуть по нижележащему элементу. Я могу сделать это с помощью мыши или клавиатуры. Но функция click (), похоже, работает только с вышележащим div. Вопрос в том, почему базовая часть, такая как мышь или клавиатура, не может
HTML
<div>
<input type='submit' id='clickdiv' value='Autoclick' onclick = "document.getElementById('Label2').innerHTML = 'Clicked!'">
<p id='Label1'> Time </p>
<p id='Label2'> </p>
<div style='position:relative;z-index:0'><iframe src='http://www.the-xtsernal-site.com' style='width:100%;height:100%;z-index:0'></iframe></div>
</div>
css
#clickdiv{width:50px;height:20px;border:1px solid green;position:absolute;top:57%;left:10%;z-index:100;pointer-events:none;background-color:red;color:white}
#Label1{width:50px;height:20px;border:1px solid green;position:absolute;top:77%;left:10%;z-index:100;}
#Label2{color:red;width:50px;height:20px;position:absolute;top:87%;left:10%;z-index:100;}
@ T.J.Crowder Я пробовал Chromium Browser Automation и Firefox Selenium ... но не смог добиться того, чего хочу. И что ж, я просто пробую безобидный проект, чтобы завершить обширную программу обучения :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если у вас нет доступа к коду внешнего сайта, вы не сможете этого сделать. Так что остановитесь здесь, если это так :-).
Хотя вы не можете щелкнуть iFrame таким образом, но вы можете отправить ему команду с помощью postMessage.
В основном это нужно называть так: yourIframe.postMessage("message", payload);
И обработайте это так в исходном коде iFrame:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if (event.origin !== "http://example.org:8080")
return;
// ...
}
Не могли бы вы рассказать, как это упаковать в скрипт? Так что я могу попробовать.
@Amateur это в основном все, что вам нужно. Внутри receiveMessage вам нужно выполнить свою логику.
В любом случае, я думаю, без доступа к исходному коду iframe это не поможет моей цели.
@ Любитель без доступа вы не можете этого сделать
Вы не можете сделать это с помощью простой веб-страницы. Вы жестяная банка делаете это с расширением браузера. (Судя по вашему описанию, это похоже на то, что вы не должен это делаете, но ...)