案例1,sina微博登录,没有插件,因此采用web方式,我首先打开https://api.weibo.com/oauth2/authorize……,然后我想增加
一个取消按钮:
1 首先打开sina
appcan.frame.open( { id:"loginsina", name:"loginsina", url:url, left:0, top: 0, change:function(index,res){ } } ); sinaInt = setInterval('addSinaCloser()', 500);//检测sina加载并增加按钮
2 检测sina加载并增加按钮:
function addSinaCloser(){ try{ if(openingSina++>=30){ clearInterval(sinaInt); clearTimeout(chkSinaTo); appcan.frame.close({name:"loginsina"}); Alert('操作超时,请检查网络后重试','网络错误'); rm(); return; } msg('加载中('+openingSina+')……'); logc("Try addSinaCloser"); var js='uexLog.sendLog("addSinaCloser ing ... ");if(!document.getElementById("myCloser")){var o = document.createElement("div");o.id="myCloser";\ o.innerHTML = \'<div class="btns login_btn" style="background-color: #eee;"><a href="#" node-type="submit" action-type="submit" tabindex="6" class="btnP" style="background-color: transparent; background-image: none; border: 0 none; text-align: center; width: 6.5em;box-shadow:none;color:#f00" onclick="uexWindow.close(-1, 500);">取 消</a></div>\';\ o.className = \'btns login_btn\';\ var node=document.getElementById("outer").firstChild;\ document.getElementById("outer").insertBefore(o, node);\ uexWindow.evaluatePopoverScript("root","content_login","callBySinaPage();");\ }'; exeFrameJs(js, 'loginsina'); //appcan.frame.evaluateScript('content_login','content_login',js); }catch(e){ alert("f1 e:"+e) } }
接着sina跳回到我的网站上的sina.php,处理成功后,回掉本地 处理函数:
<script> try{ window.uexOnload = function(){//因为没有引入appcan.js,所以只能用uexWindow uexLog.sendLog("logined , log from sina.php"); uexWindow.evaluatePopoverScript('', 'content_login', 'loginBack(<?php echo json_encode($data); ?>)'); setTimeout('uexWindow.close(15,500);', 500); } //uexLog.sendLog("logined , log from sina.php"); ; }catch(e){ alert(e) } </script>