npm i --save nativescript-android-advanced-webview
- 版本: 1.0.3
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-android-advanced-webview
- 下载
- 昨天: 0
- 上周: 4
- 上个月: 12
NativeScript Android 高级 Webview
此插件将允许您使用 Android Webview 的一些高级功能。此插件使用以下库
Android: Android-AdvancedWebView
注意: 我既不是 iOS 专家也不是 Android 专家。所以,如果您认为可以做出改进,请贡献力量 :)
安装
tns plugin add nativescript-android-advanced-webview
使用 (Angular)
import { registerElement } from "nativescript-angular";
registerElement("AdvanceWebview", () => require("nativescript-android-advanced-webview").AndroidAdvancedWebview);
ngAfterViewInit() {
let advanceWebview: AndroidAdvancedWebview = this.page.getViewById("webview");
let optons: AndroidAdvanceWebviewOptions = {
android: {
setGeolocationEnabled: false,
setCookiesEnabled: true,
}
}
advanceWebview.setWebviewOptions(optons);
advanceWebview.on("started", function (res) {
console.log("started");
console.dir(res);
})
advanceWebview.on("finished", function (res) {
console.log("finished");
console.dir(res);
})
}
HTML
<AdvanceWebview id="webview" src="https://google.com"></AdvanceWebview>
WebViewClient 或 WebChromeClient 类的高级配置。您需要实现自己的自定义覆盖方法。您几乎可以在这里做任何事情 :). 您可以安装 tns-platform-declarations
以避免 TypeScript 错误。请查看示例以获取更多详细信息。
advanceWebview.setUpWebViewClient(new MyWebViewTestClient()); //android.webkit.WebViewClient class
advanceWebview.setUpWebChromeClient(new MyWebChromeClient()); //android.webkit.WebChromeClient
类可以扩展如下
export class MyWebViewTestClient extends android.webkit.WebViewClient {
constructor() {
super();
return global.__native(this);
}
public onPageStarted(view: android.webkit.WebView, url: string, favicon: android.graphics.Bitmap): void {
console.log("onPageStarted: " + url);
}
public onPageFinished(view: android.webkit.WebView, url: string): void {
console.log("onPageFinished");
}
public onReceivedError(view: android.webkit.WebView, request, error): void {
console.log("onReceivedError");
}
}
export class MyWebChromeClient extends android.webkit.WebChromeClient {
constructor() {
super();
return global.__native(this);
}
public onReceivedTitle(view: android.webkit.WebView, title: string): void {
console.log(title);
}
public onPermissionRequest(request: any): void {
console.log("Permission asked !!");
request.grant(request.getResources());
}
}
API
事件: started, finished, error, downloadRequested, externalPageRequest
您可以通过扩展 WebViewClient 或 WebChromeClient 类来获取更多事件,如 onReceivedTitle
、onPermissionRequest
(允许麦克风)等。此插件也有一些限制。您可以查看库存储库以获取更多详细信息。
android?: {
setGeolocationEnabled?: boolean;
addHttpHeader?: {
request: string;
value: string;
};
addPermittedHostname?: string;
preventCaching?: boolean;
setThirdPartyCookiesEnabled?: boolean;
setCookiesEnabled?: boolean;
setMixedContentAllowed?: boolean;
setDesktopMode?: boolean;
loadHtml?: boolean;
};
详细信息在这里: https://github.com/delight-im/Android-AdvancedWebView
许可证
MIT
作者: Jibon L. Costa