Как правильно использовать NativeScript WebView без его рендеринга?

#android #ios #webview #nativescript

Вопрос:

Я хочу использовать WebView NativeScript для предварительной обработки некоторых моих данных (он использует XHTML, поэтому я должен использовать WebView и метод evaluateJavascript).

Но для предварительного процесса я не хочу отображать все веб-представление всего за мгновение ока, поэтому я создал службу, которая создает new WebView() экземпляр. Теперь я могу установить атрибут src таким образом и все остальные, такие как высота и с, но если я хочу вызвать функцию evaluateJavascript, я не могу. Код ниже.

 test() { //create new webview instance  this.wv = new WebView();  //all of this works  this.wv.set('height', 100);  this.wv.setProperty('width', 200);  this.wv.setProperty('src', 'some url here');   //this does not work this.wv.android.evaluateJavascript(  'function test(){ return 1;} test();',  new android.webkit.ValueCallback({  onReceiveValue: function (res: any) {  console.log(res);  }  })  );  }  

Методы set и setProperty хороши, но evaluateJavascript говорится, что они не могут быть вызваны для неопределенных.

 console.log(this.wv.android); //undefined  

Также событие WebView loaded не запускается, если в приведенной выше тестовой функции есть что-то подобное.

 this.wv.on('loadFinished', (data) =gt; {  console.log('loadFinished');  console.dir(data);  });  

С другой стороны, если я создам компонент, помещу в него элемент WebView, чем буду прослушивать событие loadFinished, я смогу запустить JS, как показано выше, вот так:

 webViewLoaded(webargs) {  // console.log('WEBVIEW LOADED');  this.webView = webargs.object;  this.webVie.android.evaluateJavascript(  'function test(){ return 1;} test();',  new android.webkit.ValueCallback({  onReceiveValue: function (res: any) {  console.log(res);  }  })  );  } //It run properly.  }  

So my questions are:

Am I right and the loadFinished event does not run on the creation of new WebView() instance? If it does run, how can I add a listener to it?

В чем разница между экземпляром new WebView() и объектом, возвращенным в приведенном выше параметре args? И почему этот.wv.android не определен в приведенной выше тестовой функции?

Могу ли я запустить evaluateJavascript в экземпляре WebView, который не имеет никакого HTML-аналога и даже не отображается? Если да, то как?

Обязан ли я визуализировать веб-представление, чтобы правильно его использовать?