张延森 5 лет назад
Родитель
Сommit
b8923eb1c4
2 измененных файлов: 40 добавлений и 3 удалений
  1. 5
    3
      src/pages/project/h5Page.js
  2. 35
    0
      src/utils/tools.js

+ 5
- 3
src/pages/project/h5Page.js Просмотреть файл

@@ -9,7 +9,7 @@ import { connect } from '@tarojs/redux'
9 9
 import { ROLE_CODE } from '@/constants/user'
10 10
 import { getQrCodeParams } from '@/utils/qrcode'
11 11
 import { getMiniQrcode, savePoint, updatePoint } from '@/services/common'
12
-import { isEmpty } from '@/utils/tools'
12
+import { isEmpty, parseURL } from '@/utils/tools'
13 13
 import { rule as ruleToast } from '@/utils/ruleToast'
14 14
 import { share as shareSavePoint } from '@/utils/shareSavePoint'
15 15
 import { report as reportCustomer } from '@/utils/customer'
@@ -381,12 +381,14 @@ export default class Index extends Component {
381 381
 
382 382
     const showH5 = !isEmpty(h5Id) && pageInfo.h5Address && pageInfo.h5Address !== 'about' && pageInfo.h5Address !== 'http://about' && pageInfo.h5Address !== 'https://about'
383 383
 
384
-    // console.log('----web-h5------>', showH5, `${pageInfo.h5Address}?${webUrlParams}`)
384
+    const originURL = parseURL(pageInfo.h5Address) || {}
385
+    const queryString = [webUrlParams, originURL.query].join('&')
386
+    const webURL = [`${originURL.origin}${originURL.host}?${queryString}`, originURL.hash].join('#')
385 387
 
386 388
     return (
387 389
       <Block>
388 390
         {this.renderMaskBanner()}
389
-        {webViewVisible && showH5 && <WebView src={`${pageInfo.h5Address}?${webUrlParams}`} />}
391
+        {webViewVisible && showH5 && <WebView src={webURL} />}
390 392
       </Block>
391 393
     )
392 394
   }

+ 35
- 0
src/utils/tools.js Просмотреть файл

@@ -113,6 +113,41 @@ export function transferImage(img) {
113 113
   return img
114 114
 }
115 115
 
116
+/**
117
+ * 简易版解析 url
118
+ * @param {*} url 
119
+ */
120
+export function parseURL(url) {
121
+  if (!url) return undefined;
122
+
123
+  let strTmp;
124
+  let query;
125
+  let hash;
126
+
127
+  const gotHash = url.split('#')
128
+  strTmp = gotHash[0]
129
+  if (gotHash.length > 1) {
130
+    hash = gotHash[1]
131
+  }
132
+  
133
+  const gotQuery = strTmp.split('?')
134
+  strTmp = gotQuery[0]
135
+  if (gotQuery.length > 1) {
136
+    query = gotQuery[1]
137
+  }
138
+
139
+  // 小程序只支持 https 开头
140
+  const [_, origin, path] = /(https:\/\/[^/]+)(.*)/.exec(strTmp)
141
+
142
+  return {
143
+    origin,
144
+    path,
145
+    query,
146
+    hash
147
+  }
148
+}
149
+
150
+
116 151
 /**
117 152
  * 解析 queryString   a=b&c=d  ==> { a:b, c:d }
118 153
  * @param {*} queryString