为什么这个JQuery点击功能不工作?(验证按钮)

Why is this JQuery click function not working? (Recaptcha verify button)

本文关键字:工作 验证 按钮 功能 JQuery 为什么      更新时间:2023-09-26

我不明白为什么它不工作。

  • 打开链接https://www.google.com/recaptcha/api2/demo
  • 在此网页中注入jquery
  • 给出验证码,选择"我不是机器人"复选框,并选择照片
  • 打开Chrome控制台并运行代码:

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

我不明白为什么点击功能(在验证按钮从js)不工作(什么都没有发生,没有错误,没有)。

编辑:

注入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();
}

正如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 ' htmlframelement ': Blocked a frame用原点"http://www.google.com"访问一个有原点的帧"https://www.google.com"。请求访问的帧有一个协议在"http"中,被访问的帧具有"https"协议。协议必须匹配。

iframe是安全的https,而实际的演示是在http的位置