Реагируйте в Native WebView, используя внешний файл JavaScript для injectedJavscript - PullRequest
0 голосов
/ 21 марта 2020

Так что проблема кажется довольно простой. Я хочу импортировать внешний JS файл, преобразовать его в строку и использовать его для ввода Javascript в WebView.

Например, я попытался:

    <WebView
      source={{ uri: 'https://www.someurl.com/' }}
      ref={(wView) => (setWebView(wView))}
      javaScriptEnabled
      domStorageEnabled
      injectedJavaScript={
        `
          ${String(contentScript)};
          const ContentScript = contentScript();
        `
      }
      onMessage={receiveMessage}
    />

Где функция contentScript выглядит так:

const contentScript = () => {
  const exec = {};

  // ... More code here

  exec.test = () => {
    window.ReactNativeWebView.postMessage('test invoked.');
  };

  return {
    exec,
  };
};

К сожалению, в большинстве случаев это не работает, так как возвращает пустой exe c. и иногда приводит к неожиданному коду, который может даже привести к ошибкам.

Поэтому я подумал о создании дополнительной компиляции, которая преобразует файл в текст и экспортирует строку. Что вы думаете? Что было бы лучшим решением для этого?

Я пытался найти решение по этому вопросу, но не смог найти какое-либо четкое решение этой проблемы.

К вашему сведению, я использую EXPO.

...