Jquery автопереход к базовому элементу

Не знаю, возможно ли это вообще!

Но я хочу автоматически нажимать на элемент на внешнем сайте.

Требуется пройти онлайн-обучение, нажав на следующую страницу, чтобы пройти все главы. Тренинг требует лишь посещения огромного количества разделов. Поскольку у меня нет доступа к коду этого сайта,

Поэтому я поместил сайт в 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 28.10.2018 11:00

@ T.J.Crowder Я пробовал Chromium Browser Automation и Firefox Selenium ... но не смог добиться того, чего хочу. И что ж, я просто пробую безобидный проект, чтобы завершить обширную программу обучения :)

user5585849 28.10.2018 11:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
64
1

Ответы 1

Если у вас нет доступа к коду внешнего сайта, вы не сможете этого сделать. Так что остановитесь здесь, если это так :-).

Хотя вы не можете щелкнуть iFrame таким образом, но вы можете отправить ему команду с помощью postMessage.

В основном это нужно называть так: yourIframe.postMessage("message", payload);

И обработайте это так в исходном коде iFrame:

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
    if (event.origin !== "http://example.org:8080")
    return;

 // ...
}

Не могли бы вы рассказать, как это упаковать в скрипт? Так что я могу попробовать.

user5585849 28.10.2018 11:31

@Amateur это в основном все, что вам нужно. Внутри receiveMessage вам нужно выполнить свою логику.

Zach Leighton 29.10.2018 06:55

В любом случае, я думаю, без доступа к исходному коду iframe это не поможет моей цели.

user5585849 29.10.2018 12:01

@ Любитель без доступа вы не можете этого сделать

Zach Leighton 29.10.2018 13:25

Другие вопросы по теме