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

时间:2015-09-06 09:30:48

标签: javascript jquery recaptcha

我不明白为什么它不起作用。

$('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();

编辑2:

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

1 个答案:

答案 0 :(得分: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:无法从'HTMLIFrameElement'读取'contentDocument'属性:阻止了一个框架   使用原点“http://www.google.com”来访问具有原点的框架   “https://www.google.com”。请求访问的帧具有协议   在“http”中,被访问的帧具有“https”协议。   协议必须匹配。

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