2015-09-06 7 views
-1

Не понимаю, почему он не работает.Почему эта функция щелчка JQuery не работает? (Кнопка подтверждения Recaptcha)

  • Открыть ссылку https://www.google.com/recaptcha/api2/demo
  • Вводят JQuery в этой веб-странице
  • Учитывая ReCaptcha, выберите флажок для «Я не робот» и выбрать фотографии
  • Открыть Chrome консоль и запустить код:

$('iframe[src*="frame"]').contents().find('#recaptcha-verify-button').click();

Я не понимаю, почему функция click (on check butto) n из js) не работает (ничего не происходит, нет ошибки, ничего).

Edit: Вводят JQuery:

if (typeof jQuery == 'undefined') { 
    loadScript('https://code.jquery.com/jquery-1.11.3.min.js', jQueryReady); 
} 
function loadScript(url, callback){ 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    if(!callback) callback = function(){}; 
    if(script.addEventListener) { 
     script.addEventListener("load", callback, false); // IE9+, Chrome, Firefox 
    } 
    else if(script.readyState) { 
     script.onreadystatechange = callback; 
    } 
    head.appendChild(script); 
} 

Нажмите на кнопку «Я не робот» работает идеально:

$('iframe[src*="anchor"]').contents().find('.recaptcha-checkbox-checkmark').click(); 

Edit2:

//https://www.google.com/recaptcha/api2/demo 
if (typeof jQuery == 'undefined') { 
    loadScript('https://code.jquery.com/jquery-1.11.3.min.js', jQueryReady); 
} 

function loadScript(url, callback) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    if (!callback) callback = function() {}; 
    if (script.addEventListener) { 
    script.addEventListener("load", callback, false); // IE9+, Chrome, Firefox 
    } else if (script.readyState) { 
    script.onreadystatechange = callback; 
    } 
    head.appendChild(script); 
} 

function jQueryReady() { 
    //working perfect 
    //$('iframe[src*="anchor"]').contents().find('.recaptcha-checkbox-checkmark').click(); 
    //not working 
    $('iframe[src*="frame"]').contents().find('#recaptcha-verify-button').click(); 
} 
+0

потому что jqueery –

+0

что вы имеете в виду с "jQuery для инъекций на этой странице?" –

+0

Вы уверены, что не терпите неудачу из-за междоменных скриптов? (Uncaught DOMException: Не удалось прочитать свойство contentDocument из «HTMLIFrameElement»: заблокирован кадр с исходным кодом «http://www.google.com» от доступа к кадру с перекрестным контуром.) – eTomate

ответ

0

Как отмечает Jaromanda X в комментариях, это, очевидно, не сработает, потому что библиотека jQuery не загружается на эту страницу.


После правки, ваш код вызывает ошибку безопасности:

if (typeof jQuery == 'undefined') { 
    loadScript('https://code.jquery.com/jquery-1.11.3.min.js', jQueryReady); 
} 

function loadScript(url, callback) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    if (!callback) callback = function() {}; 
    if (script.addEventListener) { 
    script.addEventListener("load", callback, false); // IE9+, Chrome, Firefox 
    } else if (script.readyState) { 
    script.onreadystatechange = callback; 
    } 
    head.appendChild(script); 
} 

function jQueryReady() { 
    $('iframe[src*="anchor"]').contents().find('.recaptcha-checkbox-checkmark').click(); 
} 

jquery-1.11.3.min.js:2 Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin " http://www.google.com " from accessing a frame with origin " https://www.google.com ". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.

Функция Iframe это безопасный протокол HTTPS, в то время как фактическое демо на месте HTTP.

+0

jQuery загружается на этой странице – mariush

+0

@mariush Смотрите мое редактирование. –

+0

Хорошо, вы правы, но когда я тестирую https://www.google.com/recaptcha/api2/demo (место https), ваш код работает отлично (нажмите «Я не робот»). Так или иначе, нажмите кнопку «Проверить», чтобы не работать. – mariush

Смежные вопросы