response-native-webview: разница guish между window.location, вызванным скриптом, и пользователем, щелкнувшим ссылку - PullRequest
2 голосов
/ 27 мая 2020

Есть ли способ в react-native-webview различать guish между пользовательской и скриптовой навигацией?

Я вижу, что события onLoad[Start,End] и onNavigationStateChange запускаются в обоих случаи. Кроме того, если я добавляю запись в WebViewClient.shouldOverrideUrlLoading() или WebViewClient.shouldInterceptRequest(), оба fns вызываются, если либо window.location изменяется внутри скрипта, либо если пользователь щелкает ссылку. Итак, как можно отличить guish этих двоих?

Спасибо!

РЕДАКТИРОВАТЬ: нужно уточнить, что я не могу контролировать, какие скрипты загружаются и что они делают. страница.

1 Ответ

0 голосов
/ 30 мая 2020

вы можете передать параметр запроса isUserCause=true в каждом окне. Местоположение в вызываемом пользователем на конце веб-сайта и onNavigationStateChange вы можете определить параметры isUserCause

вы можете передать URL-адрес следующим образом

http://www.example.com/index.php?isUserCause=true

и в onNavigationStateChange вы можете анализировать параметры запроса по QS pacakge

import qs from 'qs';

getQueryParams = (url) => {
    var regex = /\?.+/g;
    const result = url.match(regex);
    if (result && result.length>0) {
      const parsed = qs.parse(result[0], {ignoreQueryPrefix: true});
      return parsed;
    } else {
      return {};
    }
  };


onNavigationStateChange = (navState) => {
    const queryParams=this.getQueryParams(navState.url);
    if(queryParams.isUserCause)
    {
      console.log("user-caused");
    }
    else
    {
      console.log("script-caused");
    }
  };
...