网页源码在线查看

✅ 源码获取成功

网页源码

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Expires" content="0"> <title>鲸云漫游-云游戏-云电脑</title> <link rel="icon" href="/assets/favicon.ico"> <script src="/js/config.js?t=007"></script> <script src="/js/globalMethod.js?t=007"></script> <style> html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: #FFFFFF; } .start-container { position: relative; width: 100%; height: 100%; } .img-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; } .img-text { position: absolute; width: 60%; left: 20%; top: 22%; z-index: 2; } .img-app { position: absolute; width: 50%; left: 25%; top: 82%; z-index: 3; } </style> </head> <body> <div class="start-container"> <img src="/assets/redirect/bg.png" class="img-bg"/> <img src="/assets/redirect/ic_launch_text.png" class="img-text"/> <img src="/assets/redirect/ic_launch_app_name.png" class="img-app"/> <div id="error-msg" style="display:none; position:absolute; bottom:20px; left:0; right:0; text-align:center; color:red; z-index:10;"></div> </div> <script> /** * 中转页:请求接口获取跳转域名,根据 URL 路径深度跳转到不同页面 * - 一级路径 /abc → /#/home?short_key=abc * - 二级路径 /abc/123 → /#/gameDetails/123?short_key=abc */ // 获取 URL 查询参数(? 后面的部分) function getUrlParams() { const params = {}; const searchParams = new URLSearchParams(location.search); for (const [key, value] of searchParams.entries()) { params[key] = value; } return params; } // 获取 URL 路径中的各段(去除首尾斜杠,返回数组) function getPathSegments() { const path = window.location.pathname; // 去除首尾斜杠,然后按斜杠分割,过滤空字符串 const segments = path.replace(/^\/+|\/+$/g, '').split('/'); return segments.filter(seg => seg !== ''); } // 根据路径段生成目标 hash 和查询参数(参数放在 hash 前面) function getTargetHashAndParams(originalParams) { const segments = getPathSegments(); let hash = '#/home'; // 纯 hash,不带前导斜杠 let extraParams = {}; if (segments.length === 0) { hash = '#/home'; } else if (segments.length === 1) { hash = '#/home'; extraParams.short_key = segments[0]; } else if (segments.length >= 2) { hash = `#/gameDetails/${segments[1]}`; extraParams.short_key = segments[0]; } // 过滤掉 code 参数(不要带到 URL) const { code, ...filteredParams } = originalParams; // 合并 extraParams(short_key 等) const allParams = { ...filteredParams, ...extraParams }; const queryString = qs(allParams); return { hash, queryString }; } // 执行跳转(参数放在 hash 前面,格式如 /?short_key=123#/home) function redirect(targetUrl, originalParams) { if (!targetUrl) { showError('未获取到跳转地址'); return; } // 将 wechatBrowserOpenId 合并到参数中(避免单独拼接) const wechatOpenId = localStorage.getItem('wechatBrowserOpenId'); const mergedParams = { ...originalParams }; if (wechatOpenId) { mergedParams.wechatBrowserOpenId = wechatOpenId; } const { hash, queryString } = getTargetHashAndParams(mergedParams); const env = window.APP_CONFIG.getCurrentEnv(); // 根据环境确定基础 URL let baseUrl = env === 'development' ? 'https://sptest.jingyungame.com/home' : targetUrl; // 去除 baseUrl 末尾多余的斜杠(避免出现 //) baseUrl = baseUrl.replace(/\/$/, ''); // 构造最终 URL:查询参数在前,hash 在后 let finalUrl; if (queryString) { finalUrl = `${baseUrl}/?${queryString}${hash}`; } else { finalUrl = `${baseUrl}${hash}`; } console.log('finalUrl', finalUrl); // 使用 replace 避免返回中转页 setTimeout(() => { location.replace(finalUrl); }, 100); } // 显示错误信息 function showError(msg) { const errorEl = document.getElementById('error-msg'); if (errorEl) { errorEl.textContent = msg; errorEl.style.display = 'block'; } } // 清除 URL 中的 code 参数(微信授权回调后避免重复使用失效 code 导致循环) function removeCodeFromUrl() { const url = new URL(location.href); url.searchParams.delete('code'); // hash 中也可能携带 code(如 #/path?code=xxx) if (url.hash && url.hash.includes('?')) { const [hashPath, queryStr] = url.hash.split('?'); const params = new URLSearchParams(queryStr); params.delete('code'); const remain = params.toString(); url.hash = remain ? `${hashPath}?${remain}` : hashPath; } history.replaceState(null, '', url.toString()); } async function getOpenidByCode() { // 获取当前环境配置 const config = window.APP_CONFIG.getConfig(); try { // 获取原始 URL 查询参数 const params = getUrlParams(); // 请求接口获取跳转域名 const response = await apiPost(config.baseURL + '/users/wxOpenid',{ code: getQueryString('code'), is_wap: 0, is_miniapp: 0, }); if (response.status === 200 && response.data) { // 直接传入原始参数,内部会根据路径自动生成 short_key 和对应 hash 路径 localStorage.setItem('wechatBrowserOpenId', response.data.openid) // 清除 URL 中的 code,避免后续重复使用失效 code 导致循环 removeCodeFromUrl() await getJumpUrl() } else { // code 换 openid 失败,清除失效 code,避免刷新后反复重试 removeCodeFromUrl() showError(response.msg || '微信授权登录失败,请刷新重试'); } } catch (error) { console.error('Redirect error:', error); removeCodeFromUrl() showError('网络请求失败,请稍后重试'); } } async function getJumpUrl() { // 获取当前环境配置 const config = window.APP_CONFIG.getConfig(); try { // 获取原始 URL 查询参数 const params = getUrlParams(); // 请求接口获取跳转域名 const response = await apiGet(config.baseURL + '/system/miniAppUrl'); if (response.status === 200 && response.data) { // 直接传入原始参数,内部会根据路径自动生成 short_key 和对应 hash 路径 redirect(response.data.short_link, params); } else { showError(response.msg || '获取跳转地址失败'); } } catch (error) { console.error('Redirect error:', error); showError('网络请求失败,请稍后重试'); } } // 主流程 async function init() { // 获取当前环境配置 const config = window.APP_CONFIG.getConfig(); if(isWeChatBrowser()) { // 获取当前环境配置 let openid = localStorage.getItem('wechatBrowserOpenId'); const code = getQueryString('code'); // 1. 有 code:用 code 换 openid(内部会清除 code,避免重复使用失效 code) if(code) { // 已成功带回 code,清除授权跳转标记 sessionStorage.removeItem('wxAuthPending') await getOpenidByCode() return false } // 2. 有 openid:直接获取跳转地址 if(openid) { await getJumpUrl() return false } // 3. 无 openid 无 code:跳转第三方授权(需防止「跳过去-回来没 code-又跳过去」的死循环) if(sessionStorage.getItem('wxAuthPending')) { // 刚跳转过第三方却没带回 code,不再重复跳转,避免无限循环 sessionStorage.removeItem('wxAuthPending') showError('微信授权失败,未获取到授权码,请刷新页面重试') return false } sessionStorage.setItem('wxAuthPending', '1') let url = `${config.thirdLoginUrl}/thirdLogin?type=wxpay&back=&redirect_uri=${encodeURIComponent(location.href)}&loginType=2` window.location.replace(url) return false } else { await getJumpUrl() } } // 页面加载后立即执行 document.addEventListener('DOMContentLoaded', init); </script> </body> </html>

最近查询