Нажмите HTML программно ссылку в JavaScript, введенную через расширение приложения Safari. - PullRequest
0 голосов
/ 24 января 2020

Я пишу расширение приложения Safari для автоматизации входа на веб-портал Citrix. Мой введенный JavaScript должен сделать две вещи. Во-первых, есть форма HTML для отправки (с именем / паролем). Это прекрасно работает и переносит меня на другую страницу с привязкой HTML, которую нужно щелкнуть. Проблема в том, что я не могу программно щелкнуть ссылку привязки HTML.

// This is the `script.js` injected by my Safari App Extension

document.addEventListener("DOMContentLoaded", function(event) {


    if (document.URL.includes("IdentityFederationPortal")) {
        document.getElementById("UserId").value = "..." // my login
        document.getElementById("Password").value = "..." // my password
        document.getElementById("submit").click() // <- works correctly
    }

    // The `.click()` method above works just fine, I assume because it is used on a form button.


    if (document.URL.includes("TPDCWeb")) {

        var loginLink = document.querySelector("#plugin-assistance-download > div > div > div > div.footer > a.pluginassistant-skiplink.web-screen-link._ctxstxt_SkipToLogon._ctxsattr_title_SkipToLogonTip");

        console.log(loginLink) // console shows loginLink is assigned the correct HTML anchor

        loginLink.click() // does not work!
    }
});

Примечания:

  1. Фактический HTML для ссылки привязки Мне нужно программно щелкнуть по: <a class="pluginassistant-skiplink web-screen-link _ctxstxt_SkipToLogon _ctxsattr_title_SkipToLogonTip" href="#" title="Click here to skip to log on">Log on</a> Я недостаточно знаком с веб-программированием, чтобы понять, что происходит, когда обычный пользователь нажимает на эту ссылку, которая при простом осмотре, кажется, никуда не ведет (и имеет NULL onClick собственность).

  2. Я видел разбросанные ссылки, предполагающие, что jQuery может быть здесь полезным, но я также не могу понять, как внедрить jQuery в скрипт расширения приложения Safari. Мои попытки пока приводят к ошибке Can't find variable $, когда я пытаюсь использовать jQuery.

1 Ответ

0 голосов
/ 24 января 2020

С помощью user1538301 Теперь у меня это работает, просто отложив вызов метода .click() на 4 секунды. Как было указано, я, вероятно, пытался «щелкнуть» по ссылке до того, как собственный JavaScript страницы завершил свою работу и назначил обработчик onclick или что-то подобное. Я уверен, что есть более элегантный способ справиться с этим, но простая временная задержка делает работу для меня на данный момент.

if (document.URL.includes("TPDCWeb")) {

    function getAndClickLink() {
        var loginLink = document.querySelector("#plugin-assistance-download > div > div > div > div.footer > a.pluginassistant-skiplink.web-screen-link._ctxstxt_SkipToLogon._ctxsattr_title_SkipToLogonTip");

        loginLink.click()
    }

    setTimeout(getAndClickLink, 4000);


}
...