Ошибка загрузки SVG в собственном WebView (iOS) - PullRequest
2 голосов
/ 30 апреля 2020

Используемые инструменты

D3 js: v4.11.0
react-native: v0.60.3
react-native-webview: v9.3.0

Ранее я использовал act-native 0.59.8 , и в этой версии WebView я использовал WebView из Reaction-native, работал нормально, SVG также отлично загружался, но после обновления рэка родного до 0.60.3 мне также пришлось взять WebView из реактивного нативного веб-вида,

React Native WebView: -

<WebView
scrollEnabled = {true}
originWhitelist={["*"]}
javaScriptEnabled={true}
source={{ uri: isAndroid ? "file:///android_asset/widget/index.html" : "./widget/index.html" }}
// useWebKit={false}
allowUniversalAccessFromFileURLs={true}
allowFileAccess={true}
scalesPageToFit={true}
onMessage={this.getSelectedSeat}
ref={component => (this.webview = component)}
style={{ width: deviceWidth, height: deviceHeight }}/>

Вызов:

this.webview.postMessage("data");

Захват в HTML:

this.window.addEventListener("message", data => {
}

Загрузка SVG в HTML: -

function loadSVG(svgURL) {
      d3.xml(
        svgURL,
        function (xml) {
          if (xml != null) {
            var importedFile = document.importNode(xml.documentElement, true);
            d3.select("#layout")
              .node()
              .append(importedFile);
          }
        },
        err => {
          alert('error')
        }
      );
    }

В android тот же код работает нормально, но не в iOS, каждый раз, когда xml равен нулю, но это было хорошо в более старой версии WebView, где я брал WebView из реактивного типа, я не знаю, что я отсутствует, может быть какая-то собственность. Пожалуйста, помогите.

Обновление: я получаю сообщение об ошибке: {"isTrusted": true}, я думаю, что это проблема, связанная с перекрестным происхождением, есть ли способ отключить это в iOS WKWebView?

...