Как загружать файлы в webview в собственном скрипте

#html #local #nativescript

#HTML #Местные новости #nativescript

Вопрос:

Я пытался найти способ загрузить содержимое локальной веб-страницы и установить html-содержимое webview в собственном скрипте. Я успешно запустил его на симуляторе, но, похоже, он не работает на устройстве. Я погуглил, и большинство людей говорят, что мне нужно найти свои HTML-файлы в каталоге «Документы» моего приложения, но, насколько я вижу, нет способа получить нужные мне файлы при развертывании приложения. Может ли кто-нибудь еще пролить свет на способы получения файлов, расположенных в папке documents приложения при развертывании или копировании их там во время выполнения. Спасибо

 var createViewModel   = require("./main-view-model").createViewModel;
var orientationModule = require("nativescript-screen-orientation");
var fs = require("file-system");

var webViewInterfaceModule = require('nativescript-webview-interface');
var oWebViewInterface;
var page; 

function pageLoaded(){
    setupWebViewInterface(page);
    // orientationModule.setCurrentOrientation("landscape", function(){     
    //     //console.log("landscape orientation set");
    // });
}

// Initializes plugin with a webView 
function setupWebViewInterface(page){
    var webView = page.getViewById('webView');
    var documents = fs.knownFolders;

    oWebViewInterface = new webViewInterfaceModule.WebViewInterface(webView, documents.currentApp().path   '/htllo/index.html');
}

function navigatingTo(args) {
    page = args.object;
    page.bindingContext = createViewModel();
}

exports.pageLoad     = pageLoaded;
exports.navigatingTo = navigatingTo;
  

Комментарии:

1. Для доступа Documents к папке устройства Android вы должны использовать собственный код. Здесь вы найдете пример — github.com/tsonevn/ReadFilesFromDevice/blob/master/app /… , как это сделать. Что касается вашего вопроса, вы должны установить DIRECTORY_DOCUMENTS in getExternalStoragePublicDirectory метод вместо DIRECTORY_DOWNLOADS . Для получения дополнительной информации о том, к каким каталогам вы можете получить доступ в Android, вы можете просмотреть статью здесь — developer.android.com/reference/android/os/Environment.html .

2. Спасибо за ваш ответ. Это не совсем то, что я хочу. В принципе. Моему клиенту нужно приложение, в котором я могу войти в систему и зарегистрироваться в компонентах собственного приложения. Затем оттуда перенаправляется на «домашнюю» страницу, которая представляет собой веб-окно, в котором я загружаю index.html это находится локально. Поэтому, когда я помещаю папку с html в каталог приложения, она отлично работает в симуляторе, но не на устройстве ios. Я нашел, где другой парень сказал, что у него такая же проблема, пока он не начал загружать файлы из каталога Documents, а не из каталога app.

3. У него нет проблем с файловой структурой и т. Д., И я не хочу связываться с машинным кодом, мне просто нужно знать, как 1. Разверните мою папку html в каталог Documents как на ios, так и на Android при компиляции на устройство или переместите их из каталога приложений в каталог documents при первой загрузке приложения. Большое вам спасибо за ваш hlep

4. Я не уверен, почему вы должны перемещать файлы в Documents каталог. Вы могли бы просмотреть пример в ответе, где было показано, как загрузить WebVew src из локального файла.

5. Всем привет. Нет, все та же проблема. Это текущая проблема на устройстве ios (указано здесь whoischris.com/nativescript-js ). Вот почему мне нужно переместить файлы. Спасибо вам за вашу помощь

Ответ №1:

Вот пример того, как добавить WebView src из локального файла. В примере были показаны оба случая с nativescript-webview-interface плагином и без него. ~/ возвращает путь к вашей app папке.

main-page.xml

 <Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo" loaded="onLoaded">
  <GridLayout rows="150 *" columns="*">
      <WebView row="0" col="0" id="WebViewId"/>
      <WebView row="1" col="0" id="WebViewId2"/>
  </GridLayout>
</Page>
  

main-page.ts

 import { EventData } from 'data/observable';
import { Page } from 'ui/page';
import { HelloWorldModel } from './main-view-model';
var webViewInterfaceModule = require("nativescript-webview-interface");
import {WebView} from "ui/web-view";

var oWebViewInterface;
export function onLoaded(args: EventData) {
  let page = <Page>args.object;
  var webView:WebView = <WebView>page.getViewById('WebViewId');
  oWebViewInterface = new webViewInterfaceModule.WebViewInterface(webView, '~/index.html');
  var SecondWebView:WebView = <WebView>page.getViewById('WebViewId2');
  SecondWebView.src="~/secondpage.html"
  page.bindingContext = new HelloWorldModel();
}
  

Комментарии:

1. Вау. Благодарим вас за комментарий по поводу ‘~/’, указывающего на каталог вашего приложения. Я на Linux, поэтому, естественно, думаю, что он указывает на домашний каталог. Я попробовал это, но все равно не работал на устройстве, как указано в следующей ссылке: whoischris.com/nativescript-js . Кажется, существует открытая проблема с загрузкой прямо из каталога приложений, и он указывает, что как только он переместил каталог в каталог документов, это устранило проблему с загрузкой. но когда я развертываю файлы с приложением, я не знаю, как перенести эти файлы в каталог Documents. И до сих пор не найдено способа переместить файлы в этот каталог

2. Я не могу получить доступ к файлу. Мой index.html не может быть загружен, потому что net::ERR_ACCESS_DENIED Пожалуйста, помогите