以下是如何使用setInterval
來做到這一點。如果用戶從不選中該框,這可能會導致瀏覽器死機。您可能希望延遲運行此操作,直到他們開始填寫表單或等待鼠標懸停/關注reCaptcha元素爲止。您可能還需要一個更具體的選擇器(通過將您的recaptcha包裝在div中),因爲您有其他可以在代碼中使用相同標題的iframe。如評論中所述,使用mutationObserver更好。 希望這可以做你需要的。
function isPuzzleDisplayed (selector) {
/**
* @param {string} selector
* @returns boolean - if the specified element exists
*/
return document.querySelectorAll(selector).length >= 1;
}
var timer = setInterval(function() {
/**
* Check if element exists every 0 seconds.
* If it does, kill timer, else keep running forever!
* WARNING! This is not performant.
*/
if (isPuzzleDisplayed('iframe[title*="recaptcha challenge"]')) {
console.log('But this is how you do it!');
/* run your code here */
clearInterval(timer);
timer = 0;
} else {
console.log('It is true the Api however does not return a property or event that would indicate that this change has happened. >', timer);
}
}, 0);
是否在iframe打開的ReCaptcha?您是否可以檢查該頁面上是否存在與這些類相關的內容? – krillgar
他們將HTML添加到您的頁面。你需要輪詢你的頁面並尋找這個類名爲'g-recaptcha-bubble-arrow' - 它可能有助於尋找突變:http://stackoverflow.com/questions/3219758/detect-changes-in-the -dom#answer-3219767 – colecmc
它在iframe中打開。我已經看過一些元素和他們的ID生成,但我沒有運氣,以DOM操作爲目標這些CSS選擇器 –