解決辦法:在tauriconfig中配置
"csp": "default-src 'self' asset: 'unsafe-inline' customprotocol://* http://localhost:* ws:localhost:* 'unsafe-eval' ipc: http://ipc.localhost; script-src 'unsafe-eval' 'self' https://www.googletagmanager.com 'unsafe-inline'; connect-src 'self' http://localhost:* ws:localhost:* ipc://localhost https://api.github.com https://www.google-analytics.com https://google-analytics.com https://pakeplus.com http://ipc.localhost customprotocol://* https://www.pakeplus.com; img-src 'self' https://avatars.githubusercontent.com https://www.googletagmanager.com asset: http://asset.localhost blob: data: http://asset.localhost; font-src 'self' asset: http://localhost data:;",
這個錯誤是由于瀏覽器的內容安全策略(CSP)阻止了字符串形式的JavaScript代碼執行。讓我為您分析并提供解決方案。
問題分析
從錯誤信息可以看出:
您的CSP策略禁止使用
unsafe-eval
代碼試圖通過
Function()
構造函數或eval()
執行字符串形式的JavaScript錯誤發生在Tauri應用程序環境中
在cocos游戲打包為移動端web的時候,需要這個場景配置。
還需要注意就是在通過參數傳遞到index..html后面的時候,在rust中使用base64解析,然后再傳遞,可以有效防止特殊字符編碼問題。然后在js中通過下面的方式獲取解析參數:
// 獲取url中的查詢參數const urlSearch = window.location.searchconsole.log('urlSearch', urlSearch)const urlParams = new URLSearchParams(urlSearch)console.log('game on urlParams', urlParams)const token = urlParams.get('ppargs')console.log('game on load', token)
再使用base64解析獲取到的參數即可。