2015-09-06 102 views
-1

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

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

我不明白为什么点击功能(验证butto n从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(); 
} 
+0

因为jqueery –

+0

你是什么意思“注入jquery在这个网页?” –

+0

你确定你没有失败,因为跨域脚本? (未被捕获的DOMException:未能从'HTMLIFrameElement'中读取'contentDocument'属性:阻止一个来源为“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