使用greasemonkey自动取消支付宝登录控件勾选


源代码在这里

支付宝登录的安全控件默认是勾选的,如果想要取消默认勾选,可以使用greasemonkey模拟点击安全控件。但是支付宝首页的登录页面实际上是一个异步加载的iframe,稍微有点麻烦。带注释的源代码如下:

// 绑定事件
window.onload = function() {
  var counter = 0;
  var waitForOption = setInterval(function(){
    // 如果取消勾选成功或者连续5次失败,不再尝试
    if(uncheckSafeLoginOption() || counter++ > 5) {
      clearInterval(waitForOption);
    }
  }, 1000);
}

function uncheckSafeLoginOption() {
  var id = 'safeSignCheck';
  // 单独的登录页面直接查找元素
  // 首页需要查找iframe后再查找元素
  var safeLoginOption = document.getElementById(id) || 
      getFrameDocument('loginIframe').getElementById(id);
  if(safeLoginOption) {
    if(safeLoginOption.checked) safeLoginOption.click();
    return true;
  }
  return false;
}

function getFrameDocument(frameId) {
  var frame = document.getElementById(frameId);
  return frame.contentDocument || frame.contentWindow.document;
}

在greasemonkey中针对支付宝首页和单独的登录页面新建一个user script,复制上面的代码,即可实现异步取消勾选。默认最多尝试5次,即5秒内IFRAME没加载完毕的话就不会再尝试。