Невозможность переопределить функцию javascript внутри Webview - PullRequest
0 голосов
/ 02 августа 2020

Я работаю над приложением React-Native, которое должно получать ответ от веб-просмотра.

проблема в том, что у меня есть эта функция в игре, и мне нужно переопределить ее, чтобы мое приложение получило ссылку и откройте ее в другом веб-просмотре вместо текущего.

function getPrepayArg(serverid, actid, payIndex) {
console.log(payIndex);
if(payIndex == 88 || payIndex == 30){
    window.open("https://somelink/user/exchange");
} else(window.open("https://somelink/user/exchange"));
}

Когда игрок нажимает кнопку внутри игры, вызывается функция.

I Я пытался переопределить его, используя метод «введенного JavaScript» из WebView.

Мой код выглядит так:

<WebView ref={WEBVIEW_REF}
    injectedJavaScriptBeforeContentLoaded={false}
    injectedJavaScript={jsCode}
    onLoadEnd={OverrideFunction}
    onMessage={(event) => {
      const { data } = event.nativeEvent;
      treatEvent(data)
    }}
    onNavigationStateChange={(navState) => { console.log(jsCode); setCanGoBack(navState.canGoBack) }}
    source={{uri: 'https://swdanceh5.com/'}}
    style={{flex: 1}}
 />

и переменная jsCode:

const jsCode = `


  document.querySelectorAll('.icons-ft-naptien')[0].addEventListener('click', stopDefAction, false);
  document.querySelectorAll('.icons-ft-naptien')[0].addEventListener('click', sendLinkDiamante, false);
  function sendLinkDiamante(){
    ReactNativeWebView.postMessage(String(document.querySelectorAll('.icons-ft-naptien')[0].getAttribute('href')));
  }

  document.querySelectorAll('.icons-ft-fanpage')[0].addEventListener('click', stopDefAction, false);
  document.querySelectorAll('.icons-ft-fanpage')[0].addEventListener('click', sendLinkFacebook, false);
  function sendLinkFacebook(){
    ReactNativeWebView.postMessage(String(document.querySelectorAll('.icons-ft-fanpage')[0].getAttribute('href')));
  }


  //Stopping Default Button click action

  function stopDefAction(evt) {
    evt.preventDefault();
  }

  function getPrepayArg(serverid, actid, payIndex){
    console.log(payIndex);
    if(payIndex == 88 || payIndex == 30){
      ReactNativeWebView.postMessage('https://swdanceh5.com/user/exchange');
    } else(ReactNativeWebView.postMessage('https://swdanceh5.com/user/exchange'))
  }

  
`;
...