Android webview nativescript don';行不通

Android webview nativescript don';行不通,android,ios,angular,webview,nativescript,Android,Ios,Angular,Webview,Nativescript,我有一个webview,在该webview中,我有一些表要导出到excel,在任何web浏览器和移动设备中都可以正常工作,但当我在webview中输入它时,它就会停止工作。当我尝试制作一个全屏元素时,也会发生同样的事情 它在iOS或Android上不工作 多谢各位 角度: var viewmodel = new observable.Observable({}); // Our new Observable view model for data binding @Component({ sel

我有一个webview,在该webview中,我有一些表要导出到excel,在任何web浏览器和移动设备中都可以正常工作,但当我在webview中输入它时,它就会停止工作。当我尝试制作一个全屏元素时,也会发生同样的事情

它在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);

}
}
var viewmodel=newobservable.observable({});
//用于数据绑定的新的可观察视图模型
@组成部分({
选择器:“主页”,
moduleId:module.id,
templateUrl:“./home.component.html”,
样式URL:['./home.component.css']
})
导出类HomeComponent实现OnInit{
//可变参数定义url和Web视图
public webViewSrc:string=”https://www.youtube.com/watch?v=uIDXcmXZnGY";
public viewmodel=新的可观察的。可观察的({});
//可变的压缩段在cargado中没有el网络视图,也没有la页面
公共isLoading:布尔值=true;
公共代币;
构造函数(专用路由扩展:路由扩展,专用
第页:第页,专用令牌服务:令牌服务){
//使用组件构造函数注入提供程序。
}
恩戈尼尼特(){
//卡贝塞拉和坦德里亚的眼镜店
this.page.actionBarHidden=true;
}
//这是一个非常有趣的事件
//有必要在本地存储、存储和工具空间中加入存储。。。
OnWebViewLoaded(args){
const webView=args.object;
if(webView.android){
webView.android.getSettings().setDomStorageEnabled(true);
webView.android.getSettings().setDatabaseEnabled(true);
webView.android.getSettings().setLoadWithOverview模式(true);
webView.android.getSettings().setBuilTinZoomControl(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(新的android.webkit.WebChromeClient());
}
}
//乌纳维兹卡加多el webview酒店
onWebViewLoaded(args){
}
//卡加达·拉帕吉纳无el网络视图!
pageLoaded(参数:EventData){
this.page=args.object;`在此处输入代码`
this.page.bindingContext=新的HomeViewModel();
this.page.bindingContext=viewmodel;
this.token=this.tokenService.recurperartoken();
log(“esto tiene mi token recurperado”,this.token);
}
}
HTML


您的网络视图!==浏览器,要下载导出的文件,您必须在Android上实现;对于iOS,您必须实现代理并处理下载请求,将文件写入存储器

此外,您还必须根据要求修改布局,以便您的网络视图可以在要求时全屏显示


如果它是应用程序中的嵌入式网页,我认为您可以使用插件,这样您就可以从您的网页触发事件,而不是处理侦听器/代理。

您的网络视图!==浏览器,要下载导出的文件,您必须在Android上实现;对于iOS,您必须实现代理并处理下载请求,将文件写入存储器

此外,您还必须根据要求修改布局,以便您的网络视图可以在要求时全屏显示


如果它是应用程序中的嵌入式网页,我认为您可以使用插件,这样您就可以从您的网页触发事件,而不是处理侦听器/代理。

非常感谢manoj。我将努力实施它。当我尝试时,我将发布解决方案。谢谢您Hi Manoj,我已设法从URL下载文件,但我无法下载blob文件。我收到以下错误:“错误:java.lang.IllegalArgumentException:只能下载HTTP/HTTPS URI:blob:https://................................."我遵循这个论坛的指示:在其他网站上谈论addinterfacejs,但我不知道如何使用它。谢谢你的唯一答案@Manoj奖励:)非常感谢Manoj。我将努力实施它。当我尝试时,我将发布解决方案。谢谢您Hi Manoj,我已设法从URL下载文件,但我无法下载blob文件。我收到以下错误:“错误:java.lang.IllegalArgumentException:只能下载HTTP/HTTPS URI:blob:https://................................."我遵循这个论坛的指示:在其他网站上谈论addinterfacejs,但我不知道如何使用它感谢Hanks为您提供了唯一的答案@Manoj奖励:)
<GridLayout >
<Page (loaded)="pageLoaded($event)" actionBarHidden="true">
<WebView  #myPage [src]="webViewSrc" 
(loadStarted)="onWebViewStartLoaded($event)" . 
(loadFinished)="onWebViewLoaded($event)"></WebView>
</Page>
</GridLayout>