簡體   English   中英

使用來自 WKWebView 和 Cordova 的 History Web API

[英]Using the History Web API from WKWebView & Cordova

我正在使用 React / Create React App / Cordova 創建一個混合應用程序。 由於 UIWebView 的幾個問題,例如浮動光標和一般不合標准的渲染,我已經切換到使用 WKWebView。 WKWebView 改善了渲染問題,但我遇到了 History Web API 的問題。

作為我的核心導航/路由的一部分,我使用下面的行將表示當前頁面的值推送到歷史 API 中。 然后我在需要時彈出這些值並傳遞給自定義路由器。 由於安全問題,這可以使用 UIWebView 正常工作,但不適用於 WKWebView。

window.history.pushState({pageId: pageId}, null, action.pageId);

推送時,我收到以下錯誤(注意:我已將此帖子的 ID 替換為 {HASH}):

SecurityError: Blocked attempt to use history.pushState() to change session history URL from file:///Users/name/Library/Developer/CoreSimulator/Devices/{HASH}/data/Containers/Bundle/Application/{HASH}/App.app/www/index.html to file:///Users/name/Library/Developer/CoreSimulator/Devices/{HASH}/data/Containers/Bundle/Application/{HASH}/App.app/www/login. Paths and fragments must match for a sandboxed document.

任何人的想法?

我的項目

反應 JS + 科爾多瓦

問題

SecurityError: Blocked attempt to use history.pushState() to change session history URL
Paths and fragments must match for a sandboxed document.

解決方案

cordova plugin add cordova-plugin-wkwebview-engine
cordova plugin add cordova-plugin-wkwebviewxhrfix

非常簡單的解決方案,但我花了幾天的時間研究將它們拼湊在一起。

非常感謝插件作者!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM