Webview本机脚本中的某些外部功能不起作用

时间:2019-02-19 18:45:31

标签: android ios angular webview nativescript

我有一个Web视图,在该Web视图中,我有要导出为ex​​cel的表格,在任何Web浏览器和移动设备上都可以正常工作,但是当我在Web视图中输入该表格后,它便停止工作。当我尝试制作全屏元素时,也会发生同样的事情。

它不适用于iOS或Android

谢谢

角度:

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 :(得分:0)

您的 WebView!==浏览器,要下载导出的文件,您将必须在Android上实现setDownloadListener,对于iOS,您将必须实现委托并处理下载请求,将文件写入存储。

此外,您还必须根据要求修改布局,以便WebView可以在全屏显示。

如果它是应用程序中的嵌入式网页,我想您可以使用nativescript-webview-interface插件,这样您就可以简单地从网页中触发事件,而不处理侦听器/委托。