簡體   English   中英

在通過 Safari App Extension 注入的 JavaScript 中以編程方式單擊 HTML 鏈接

[英]Click HTML link programmatically in JavaScript injected via Safari App Extension

我正在編寫一個 Safari 應用程序擴展來自動登錄到 Citrix Web 門戶。 我注入的 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>我對 Web 編程不夠熟悉,無法理解當普通用戶單擊該鏈接時會發生什么,通過簡單的檢查,該鏈接似乎沒有指向任何地方(並且具有NULL onClick屬性)。

  2. 我看到零散的參考資料表明 jQuery 可能在這里有用,但我也無法弄清楚如何將 jQuery 注入到 Safari App Extension 腳本中。 到目前為止,當我嘗試使用 jQuery 時,我的嘗試導致Can't find variable $錯誤。

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);


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM