Открытие URL из Webview не работает в React Native - PullRequest
0 голосов
/ 10 июня 2019

Я загружаю какое-то веб-представление в React Native, используя какой-то URL. После загрузки страницы веб-просмотра у меня есть ссылки на социальные сети на этой веб-странице.

Итак, я пытаюсь открыть эти URL, когда пользователь нажмет на них.

   onMessage = (e) => {
     // retrieve event data
     let data = e.nativeEvent;
     console.log('data', data);
     // maybe parse stringified JSON
     try {
       data = JSON.parse(data);
     } catch (e) { }

     // check if this message concerns us
     if (typeof data === 'object' && data.external_url_open) {
       // proceed with URL open request
       console.log('external_url_open', data.external_url_open);
      //  Linking.openURL(data.external_url_open);
       this.openSocialNetworksURL(data.external_url_open);
     }
   }

   openSocialNetworksURL = (url) => {
     Linking.canOpenURL(url).then((supported) => {
       if (!supported) {
         console.log(`Can't handle url: ${url}`);
       } else {
         return Linking.openURL(url);
       }
     }).catch(err => console.error('An error occurred', err));
   }

    render() {
             const injectedJs = '!function(){var e=function(e,n,t){if(n=n.replace(/^on/g,""),"addEventListener"in window)e.addEventListener(n,t,!1);else if("attachEvent"in window)e.attachEvent("on"+n,t);else{var o=e["on"+n];e["on"+n]=o?function(e){o(e),t(e)}:t}return e},n=document.querySelectorAll("a[href]");if(n)for(var t in n)n.hasOwnProperty(t)&&e(n[t],"onclick",function(e){new RegExp("^https?://"+location.host,"gi").test(this.href)||(e.preventDefault(),window.postMessage(JSON.stringify({external_url_open:this.href})))})}();';
        return (
              <WebView
                source={{ uri }}
                style={styles.webView}
                onLoad={() => this.hideSpinner()}
                injectedJavaScript={injectedJs}
                onMessage={this.onMessage.bind(this)}
                scalesPageToFit
                javaScriptEnabledAndroid
                javaScriptEnabled
                onError={(err) => {
                  this.hideSpinner();
                }}
              />

 );
   }

URL-адрес, который я получаю с этой страницы:

«данные», {данные: '{"external_url_open": "https://www.facebook.com/somepage/"}'}

Но, это ничего не раскрывает. в Android, по крайней мере, его журнал консоли печати, но, само веб-представление iOS выдает сбой.

Есть предложения?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...