之前做一個釘釘項目的時候,需要將釘釘的返回功能修改一下不是按照歷史后退一步,而是有層次的后腿返回;
通常我們的返回按鈕的代碼是如下這樣:
function goback(){
if(history.length>1){ //有歷史就返回
history.go(-1);
}else if(document.referrer){
window.location.assign(document.referrer);
}
}
但是根據客戶需求我們要對釘釘的返回稍作修改
第一步是引入釘釘相關的js文件,並調用相關函數
<script type="text/javascript"
src="https://g.alicdn.com/dingding/open-develop/0.9.2/dingtalk.js"></script>
<script type="text/javascript">
var tt = '${catindex}';
var _config = ${dd_config};
window.localStorage.setItem("_config", _config);
window.localStorage.setItem("newurl", window.location.href);
window.localStorage.setItem("newurl2", window.location.href);
</script>
再者更加需求修改代碼,在開發的時候因為對釘釘的相關函數的調用不是很清楚所以導致來回重復了好多問題,后來問了釘釘小二,給出了一個解決方案。
dd.config({
agentId : _config.agentId,
corpId : _config.corpId,
timeStamp : _config.timeStamp,
nonceStr : _config.nonceStr,
signature : _config.signature,
jsApiList : [ 'runtime.info', 'biz.contact.choose',
'device.notification.confirm', 'device.notification.alert',
'device.notification.prompt', 'biz.ding.post',
'biz.util.openLink', 'biz.navigation.setLeft',
'biz.navigation.close' ]
});
//關閉
function close() {
dd.biz.navigation.close({
onSuccess : function(result) {
},
onFail : function(err) {
}
});
}
dd.ready(function() {
document.addEventListener('backbutton', function() {
close();
})
});
但這個方法只能適配安卓的手機,不能適配IOS。所以成功了一半,后來再仔細的把釘釘的開發文檔研究了一下。
dd.ready(function() {
dd.biz.navigation.setLeft({
show : true,//控制按鈕顯示, true 顯示, false 隱藏, 默認true
control : true,//是否控制點擊事件,true 控制,false 不控制, 默認false
showIcon : true,//是否顯示icon,true 顯示, false 不顯示,默認true; 注:具體UI以客戶端為准
text : '返回',//控制顯示文本,空字符串表示顯示默認文本
onSuccess : function(result) {
close();
},
onFail : function(err) {
}
});
});
這樣調用在IOS上面的釘釘中實現我們想要的效果。
所以結合兩者,我做了一個判斷,根據不同的機型,調用不同的代碼,問題成功解決。
可能是由於釘釘自身也處於開發狀態,所以很多前端的適配問題有很多,同樣是chrome內核,在chrome瀏覽器上面可以但是在釘釘的環境下不行。頭疼!
