You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

278 lines
7.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

export default {
init: function(options) {
this.initWebview(options)
this.handleEvent()
return this
},
initWebview: function(options) {
var _self = this
_self.webview = plus.webview.create('', 'browser', {
'uni-app': 'none', //不加载uni-app渲染层框架避免样式冲突
titleNView: {
backgroundColor: '#007aff',
titleColor:'#FFFFFF',
progress: { //进度条
color: '#4678e7',
height: '3px'
},
splitLine: { //底部分割线
color: '#cccccc',
height: '1px'
},
buttons: [
{ //关闭按钮
'float': 'left',
fontSrc: '/static/font.ttf',
text: '×',
onclick: _self.close.bind(_self)
},
{ //更多按钮
'float': 'right',
fontSrc: '/static/font.ttf',
text: '…',
onclick: _self.more.bind(_self)
}],
titleText: '舾装办公'
},
additionalHttpHeaders: options.headers || {}
})
// 配置下拉刷新
/*_self.webview.setPullToRefresh({
support: false
}, function() {
_self.reload()
var titleUpdate = function() {
setTimeout(function() {
_self.webview.endPullToRefresh()
_self.webview.removeEventListener('titleUpdate', titleUpdate)
}, 300)
};
_self.webview.addEventListener('titleUpdate', titleUpdate)
})*/
//绘制返回前进按钮
/*this.navBottom = new plus.nativeObj.View("navBottom", {
bottom: '0px', left: '0px', height: '44px', width: '100%', backgroundColor: 'rgb(255,255,255)'
})*/
var screenWidth = plus.screen.resolutionWidth
var left = screenWidth / 4
/*this.navBottom.draw([
{
tag: 'font',
id: 'back',
text: '\ue471',
textStyles: {
fontSrc: '/static/uni.ttf',
size: '24px',
color: '#000000'
},
position:{
right: left,
height:'100%',
}
},
{
tag: 'font',
id: 'forward',
text: '\ue470',
textStyles: {
fontSrc: '/static/uni.ttf',
size: '24px',
color: '#000000'
},
position:{
left: left,
height:'100%',
}
}
])*/
//点击前进或后退
/*this.navBottom.addEventListener("click", (e) => {
if (e.clientX > left && e.clientX < (left + 24)) {
_self.back()
}
if(e.clientX > (screenWidth - left - 12) && e.clientX < (screenWidth - left + 12)){
_self.forward()
}
})*/
//var wv;
//var currentWebview = _self.webview;
//console.log(currentWebview);
//setTimeout(function() {
// wv = currentWebview.children()[0]
// console.log(wv);
// //console.log(wv.getStyle());
// wv.setStyle({scalable:true})
//}, 1000);
//监听页面变化
_self.webview.addEventListener('loaded', function(){
//视频满屏播放设置
if (uni.getSystemInfoSync().platform == 'android') {
var el = _self.webview.webkitFullscreenElement; //获取全屏元素
if(el) {
plus.screen.lockOrientation('landscape'); //锁死屏幕方向为横屏
} else {
plus.screen.unlockOrientation(); //解除屏幕方向的锁定
}
}
else if (uni.getSystemInfoSync().platform == 'ios') {
// iOS平台的视频全屏旋转
// 监听的事件与Android平台有很大区别
_self.webview.addEventListener('webkitbeginfullscreen', function() {
plus.screen.lockOrientation('landscape'); //锁死屏幕方向为横屏
});
_self.webview.addEventListener('webkitendfullscreen', function() {
plus.screen.lockOrientation('portrait-primary'); //锁死屏幕方向为竖屏
});
}
_self.webview.canBack(function(event) {
var canBack = false
if(event.canBack) {
canBack = true
//_self.navBottom.show()
}else{
canBack = false
}
// _self.webview.canForward(function(event) {
// if(event.canForward) {
// _self.navBottom.drawText('\ue6a3', {left: left, height:'100%'}, {color:'#000000', fontSrc: '/static/uni.ttf', size: '24px'}, 'forward')
// }else{
// _self.navBottom.drawText('\ue679', {left: left, height:'100%'}, {color:'#EEEEEE', fontSrc: '/static/uni.ttf', size: '24px'}, 'forward')
// }
// if(!canBack && !event.canForward){
// _self.navBottom.hide()
// }
// })
});
// 涉及到5+API的内容均在plusready事件后调用
// document.addEventListener('plusready', function() {
// var osName = plus.os.name;
// if (uni.getSystemInfoSync().platform == 'android') {
// fullScreenOfAndroid();
// } if (uni.getSystemInfoSync().platform == 'ios') {
// var videoElem = document.getElementById('video');
// fullScreenOfIos(videoElem);
// }
// });
// //视频满屏播放设置
// if (uni.getSystemInfoSync().platform == 'android') {
// var self = plus.webview.currentWebview();
// self.addEventListener('webkitfullscreenchange', function() {
// var el = self.webkitFullscreenElement; //获取全屏元素
// if(el) {
// plus.screen.lockOrientation('landscape'); //锁死屏幕方向为横屏
// } else {
// plus.screen.unlockOrientation(); //解除屏幕方向的锁定
// }
// });
// }
// else if (uni.getSystemInfoSync().platform == 'ios') {
// var videoElem = plus.webview.currentWebview();
// // iOS平台的视频全屏旋转
// // 监听的事件与Android平台有很大区别
// videoElem.addEventListener('webkitbeginfullscreen', function() {
// plus.screen.lockOrientation('landscape'); //锁死屏幕方向为横屏
// });
// videoElem.addEventListener('webkitendfullscreen', function() {
// plus.screen.lockOrientation('portrait-primary'); //锁死屏幕方向为竖屏
// });
// }
}, false);
},
onReady: function() {
// var wv=this.webview;
// // #ifdef APP-PLUS
// var currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象
// setTimeout(function() {
// wv = currentWebview.children()[0]
// wv.setStyle({scalable:true})
// }, 1000); //如果是页面初始化调用时,需要延时一下
// // #endif
},
handleEvent: function(url) {
var _self = this
plus.key.addEventListener('backbutton', function() {
var topWebview = plus.webview.getTopWebview();
//console.log(topWebview);
// 不等于浏览器窗口
if(topWebview === undefined || topWebview === null || topWebview.id !== 'browser') {
// 这里除了浏览器窗口就是首页了,直接退出了;
//不能直接退出,跳转到首页
//plus.runtime.quit();
//uni.navigateBack({
// delta: 1
//});
//uni.switchTab({
// url:'/pages/index/index'
//});
_self.close();
} else {
_self.back()
}
});
},
show: function(url) {
url = url || 'https://jd-appimg.spacecig.com/hybrid/html/load.html'
this.webview.loadURL(url)
this.webview.show('slide-in-right')
},
back: function() {
// 后退
var _self = this
_self.webview.canBack(function(event) {
if(event.canBack) {
_self.webview.back()
} else {
_self.close()
}
})
},
more: function(){
var _self = this
uni.showActionSheet({
itemList: ['刷新', '浏览器打开'],
success: function (res) {
if(res.tapIndex == 0){
_self.reload()
}else if(res.tapIndex == 1){
plus.runtime.openURL(_self.webview.getURL())
}
}
})
},
reload: function(ifload){
this.webview.reload(true)
},
forward: function(){
//前进
var _self = this
_self.webview.canForward(function(event) {
if(event.canForward) {
_self.webview.forward();
} else {
plus.nativeUI.toast('没有可前进的地址')
}
})
},
close: function(){
//关闭
//this.navBottom.close()
this.webview.close('browser', 'slide-out-right')
this.webview.clear()
}
}