|
|
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()
|
|
|
}
|
|
|
}
|