解决H5页面在微信中跳转时URL不变的问题
2019-05-14 11:18
609 查看
最近做了一个功能,H5页面需要在微信中打开,到最后一个页面时,需要重新再浏览器中打开,然后调起APP,使用vue-router的hash模式,根据网上的办法,一直实现不了,现在目前有两个办法
1. hash模式改成history模式:history发布的时候会比hash模式外面多添加一个文件夹;finance
- 首先把vue-router里面的路由配置的mode改成history模式,然后前端需要配置一个404页面:
export default { mode: 'history', base:'/finance/',//服务器里面根目录添加一个文件夹 routes: [ { path: '/index.html', name:'introduce', component: r => require.ensure([], () => r(require('../views/introduce')), 'introduce') }, { path: '/intention.html', name:'intention', meta: { title: '补充个人信息' }, component: r => require.ensure([], () => r(require('../views/intention')), 'intention') }, { path: '/myloan.html', name:'myloan', meta: { title: '悦农e贷' }, component: r => require.ensure([], () => r(require('../views/myloan')), 'myloan') }, { path: '/agreement.html', name:'agreement', meta: { title: '协议' }, component: r => require.ensure([], () => r(require('../views/agreement')), 'agreement') }, { path: '/errorPage', name:'errorPage', meta: { title: '错误' }, component: r => require.ensure([], () => r(require('../views/errorPage')), 'errorPage') }, ] }
为了可以多个项目区分,所以想要在打开的时候添加一个文件夹来区分例如:http://c-test.duckdns.org:10002/finance/index.html这样来打开,所以要使用一个base属性:
- 打包的时候要修改一下打包配置,因为目前hisTory模式相当于把我们的项目外面多加了一层文件夹:finance
1.修改配置文件config文件夹下面的index.js的build配置
build: { // Template for index.html prodEnv: require('./prod.env'), sitEnv: require('./sit.env'), uatEnv: require('./uat.env'), index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '/finance/',//把原来的/改为/finance/ productionSourceMap: true, devtool: '#source-map', productionGzip: false, productionGzipExtensions: ['js', 'css'], bundleAnalyzerReport: process.env.npm_config_report }
2.修改build文件夹下面的webpack.prod.conf.js文件
output: { publicPath: '/finance/', path: config.build.assetsRoot, filename: utils.assetsPath('js/[name].[chunkhash].js'), chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') },
3. 接下来就是修服务器里面的配置:history模式需要服务器配置404页面都指向你的index.html页面,我这边使用的是NGINX服务器,nginx配置如下:标识所有页面都尝试去找你的index.html页面
location ^~/finance { root D:/ngins/finance;//index文件所在目录 index index.html; try_files $uri $uri/ /index.html; }
4. 这样改好之后安卓可以实现功能,但是ios里面URL还是一直不变,单独的针对ios需要在router.afterEach里面做处理
router.afterEach((to, from) => { const u = window.navigator.userAgent.toLowerCase() (u.indexOf("like mac os x") < 0 || u.match(/MicroMessenger/i) != 'micromessenger') return if(u.match(/MicroMessenger/i) != 'micromessenger') return if (to.path == 'myloan.html') { location.assign(to.fullPath) } })2. 或者可以尝试把单页面改成多页面的项目,这个目前还没有尝试
相关文章推荐
- JavaWeb中的一些简单操作(四) 页面间的跳转的本质以及url乱码问题解决
- 微信h5页面中跳转下载第三方app的解决办法
- 解决微信小程序使用switchTab跳转后页面不刷新的问题
- spring jquery Mobile 页面跳转后浏览器url未改变&&javaScript代码刷新后才能执行的问题解决
- IDEA中页面跳转不到controller层的url映射的问题解决
- Webview获取连续H5页面的title,并解决回退时title不变的问题
- 微信小程序出现wx.navigateTo页面不跳转问题的解决方法
- 解决微信小程序使用switchTab跳转后页面不刷新的问题
- 微信小程序——wx.navigateTo中url无法跳转问题(app.json中配置的tabBar与wx.navigateTo中url引用相同页面导致)(2017/12)
- 在h5页面点击微信图文消息链接出现 两次跳转的问题
- 微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
- 微信小程序:wx.navigateTo中url无法跳转问题(app.json中配置的tabBar与wx.navigateTo中url引用相同页面导致)
- 解决微信小程序使用switchTab跳转后页面不刷新的问题
- 微信小程序 navigate页面跳转问题解决方案
- 关于python中selenium获取不到跳转页面的当前url问题解决
- java 页面url传值中文乱码问题解决
- 微信h5页面中跳转外部浏览器下载APK的办法
- 帮我解决以下通过URL取得页面内容时出现的问题
- 网站开发进阶(三十七)JSP页面跳转问题解决
- C# asp.net页面通过URL参数传值中文乱码问题解决办法