Некоторые внешние функции внутри nativescript webview не работают - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть веб-просмотр, и в рамках этого веб-просмотра у меня есть таблицы, которые я хочу экспортировать в Excel, в любом веб-браузере и на мобильных устройствах работает хорошо, но как только я вхожу в веб-просмотр, он перестает работать.То же самое происходит, когда я пытаюсь сделать полноэкранный элемент.

Он не работает на iOS или Android

Спасибо

Angular:

var viewmodel = new observable.Observable({});
// Our new Observable view model for data binding
@Component({
selector: "Home",
moduleId: module.id,
templateUrl: "./home.component.html",
styleUrls:['./home.component.css']
})
export class HomeComponent implements OnInit {
// variable para definir la url a la que accedera el webview
public webViewSrc: string = "https://www.youtube.com/watch?v=uIDXcmXZnGY";

public viewmodel= new observable.Observable({});
//variable para comprobar si se ha cargado o no el webview o la page
public isLoading:boolean= true;
public token;

constructor(private routerExtensions: RouterExtensions,private 
page:Page,private tokenService:TokenService) {
    // Use the component constructor to inject providers.
}
ngOnInit(){
    //Ocultamos la cabecera que tendria la app
    this.page.actionBarHidden = true;
}
//evento que salta cuando comienza a cargarse la pag web
// es necesario para poder acceder a la localstorage, desabilitar las toolszoom...
onWebViewStartLoaded(args){
    const webView = args.object;

    if (webView.android) {
        webView.android.getSettings().setDomStorageEnabled(true);
        webView.android.getSettings().setDatabaseEnabled(true);
        webView.android.getSettings().setLoadWithOverviewMode(true);
        webView.android.getSettings().setBuiltInZoomControls(false);
        webView.android.getSettings().setJavaScriptEnabled(true);
        webView.android.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.android.getSettings().setAllowFileAccess(true);
        webView.android.getSettings().setPluginsEnabled(true);
        webView.android.getSettings().setAllowContentAccess(true);
        webView.android.getSettings().setAllowFileAccess(true);
        webView.android.getSettings().setAllowFileAccessFromFileURLs(true);
        webView.android.getSettings().setAllowUniversalAccessFromFileURLs(true);
        webView.android.setWebChromeClient(new android.webkit.WebChromeClient());

    }
}
// Una vez cargado el webview 
onWebViewLoaded(args){

}
//Una vez cargada la Pagina no el webview!
pageLoaded(args: EventData) {
    this.page = <Page>args.object;`enter code here`
    this.page.bindingContext = new HomeViewModel();
    this.page.bindingContext = viewmodel;
    this.token=this.tokenService.recuperarToken();
    console.log("esto tiene mi token recuperado",this.token);

}
}

HTML

<GridLayout >
<Page (loaded)="pageLoaded($event)" actionBarHidden="true">
<WebView  #myPage [src]="webViewSrc" 
(loadStarted)="onWebViewStartLoaded($event)" . 
(loadFinished)="onWebViewLoaded($event)"></WebView>
</Page>
</GridLayout>    

1 Ответ

0 голосов
/ 19 февраля 2019

Ваш WebView! == Браузер , чтобы загрузить экспортированный файл, вам нужно будет внедрить setDownloadListener на Android, для iOS вам придется реализовать делегатов и обработать запрос на загрузку., запишите файл в хранилище.

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

Если это встроенная веб-страница в приложении, я думаю,вы можете использовать плагин nativescript-webview-interface , чтобы вы могли просто запустить событие со своей веб-страницы, чем обрабатывать слушателей / делегатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...