<template> <view> <web-view :src="url" @message="getMessage" ref="v"></web-view> </view> </template> <script> export default { data() { return { // url: 'https://uniapp.dcloud.io/static/web-view.html', url: 'http://localhost:5000/login.html?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Dtest%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A5003%252Fcallback.html%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520ms.product%26state%3D38b54b3ed56643d496d287d0782da8f0%26code_challenge%3DElk-mxsrknVQXK-WQ0aGH9OF34Nq2mOSJStoLuKWd84%26code_challenge_method%3DS256%26response_mode%3Dquery' } }, onLoad(options) { if (options && options.url) { this.url = options.url; } this.listenUrl() }, methods: { getMessage(event) { uni.showModal({ content: JSON.stringify(event.detail), showCancel: false }); }, listenUrl() { var that = this; setInterval(() => { var currentUrl = that.getCurrentUrl(); var code = that.getCurrentQueryString(currentUrl, 'code'); console.log('获取到的code:', code) if (currentUrl.includes("/callback")){ console.log('回调咯!!!!!!!!!!!') var navURL = `/pages/component/button?code=${code}`; uni.navigateTo({ url: navURL, animationType: 'pop-in' }) } }, 5000) }, getCurrentQueryString(url, name) { var queryString = url.substring(url.indexOf('?')); var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r = queryString.substr(1).match(reg); if (r != null) { return unescape(r[2]); } return null; }, getCurrentUrl(){ var pages = getCurrentPages(); var page = pages[pages.length - 1]; var currentWebview = page.$getAppWebview(); var url = currentWebview.children()[0].getURL(); console.log("=======当前地址======", url); return url; } } } </script> <style> </style>