首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >webview原生脚本中的某些外部功能不起作用

webview原生脚本中的某些外部功能不起作用
EN

Stack Overflow用户
提问于 2019-02-20 02:45:31
回答 1查看 919关注 0票数 2

我有一个webview,在这个webview中,我有一些表格想要导出到excel中,在任何web浏览器和移动端都运行得很好,但是当我在webview中输入它时,它就停止工作了。当我尝试制作一个全屏元素时,同样的事情也会发生。

它不能在iOS或上运行

谢谢

角度:

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>    
EN

回答 1

Stack Overflow用户

发布于 2019-02-20 04:20:12

你的WebView !== Browser,要下载导出的文件,你必须在安卓上实现setDownloadListener,对于iOS,你必须实现委托并处理下载请求,将文件写入存储。

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

如果它是一个嵌入在应用程序中的网页,我认为你可以使用nativescript-webview-interface插件,这样你就可以简单地从你的网页中触发一个事件,而不是处理侦听器/代理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54773002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档