2016-10-12 3 views
1

로컬 스크립트에서 webview html 콘텐츠를로드하고 설정하기위한 로컬 웹 페이지 콘텐츠를 가져 오는 방법을 알아 내려고 노력했습니다. 나는 성공적으로 시뮬레이터에서 작동하도록 만들었지 만, 장치에서 작동하지 않는 것 같습니다. 내가 봤 거든 대부분의 사람들은 내 애플 리케이션의 '문서'디렉토리에서 내 HTML 파일을 찾을 필요가 있다고 말하고 있지만 내가 볼 수있는 한 거기에 내가 거기에 필요한 파일을 얻을 수있는 방법은 없습니다. 앱. 누구든지 런타임시 배포 또는 복사 할 때 응용 프로그램의 문서 폴더에있는 파일을 가져 오는 방법에 대해 알 수 있습니다. 감사합니다기본 스크립트에서 webview로 파일을로드하는 방법

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; 
+0

는 안드로이드 장치'네이티브 코드를 사용한다 Documents' 폴더에 액세스합니다. 여기에 예제가 있습니다 - https://github.com/tsonevn/ReadFilesFromDevice/blob/master/app/main-page.ts#L21, 그 방법. 귀하의 질문에 관해서는'DIRECTORY_DOWNLOADS' 대신'getExternalStoragePublicDirectory' 메쏘드에'DIRECTORY_DOCUMENTS'를 설정해야합니다. 더 많은 정보를 얻으려면 안드로이드에서 어떤 디렉토리에 액세스 할 수 있는지 여기에서 문서 (https://developer.android.com/reference/android/os/Environment.html)를 검토하십시오. –

+0

답변 해 주셔서 감사합니다. 그게 아니라 내가 원하는 걸. 원래. 고객이 기본 앱 구성 요소에 로그인하여 등록 할 수있는 앱을 원합니다. 그런 다음 거기에서 로컬로있는 index.html을로드하는 웹 창인 '홈'페이지로 전달됩니다. 그래서 내가 애플 리케이션 디렉토리에 html로 폴더를 넣어 시뮬레이터에서 잘 작동하지만 ios 장치에서 작동하지 않습니다. 나는 다른 사람이 그가 app dir이 아닌 Documents dir에서 파일을로드하기 시작할 때까지 동일한 문제가 있다고 말한 것을 발견했습니다. – TheMan68

+0

파일 구조 등의 문제가없고 네이티브 코드를 망치고 싶지는 않습니다. 어떻게해야하는지 알 필요가 있습니다 1. 장치에 컴파일하거나 이동할 때 ios와 android의 Documents dir에 html 폴더를 배포하십시오 앱 디렉토리에서 첫 번째 앱로드시 문서 디렉토리로 이동합니다. 당신의 토끼에 대해 대단히 감사합니다. – TheMan68

답변

2

다음은 로컬 파일에서 WebView src을 추가하는 방법의 예입니다. 이 예에서는 nativescript-webview-interface 플러그인이있는 경우와없는 경우가 모두 표시되었습니다. ~/app 폴더의 경로를 반환합니다.

메인에서 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> 

메인 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(); 
} 
+0

와우. 앱 디렉토리를 가리키는 '~ /'에 대한 의견을 보내 주셔서 감사합니다. 리눅스에 관한 Im는 그것이 자연스럽게 홈 디렉토리를 가리키고 있다고 생각합니다. 나는 이것을 시도했으나 https://whoischris.com/nativescript-js/에서 다음과 같은 링크를 지적하면서 장치에서 여전히 작동하지 않았다. 응용 프로그램 디렉토리에서 곧바로 로딩 파리의 공개 문제가있는 것 같아요. 그는 일단 문서 디렉토리로 이동하면로드 문제가 해결되었다고 지적합니다. 하지만 응용 프로그램을 사용하여 파일을 배포 할 때 해당 파일을 Documents 디렉토리에 가져 오는 방법을 알지 못합니다. 그리고 지금까지는 해당 디렉토리로 파일을 이동하는 방법을 찾지 못했습니다 – TheMan68

+0

도움을 주셔서 감사합니다 – TheMan68