javascript - 如何在 nativescript 中使用 InAppBrowser
问题描述
我将Nativescript inAppBrowser 插件添加到我的 nativescript core(javascript) 项目中。我将文档中的代码复制到我的项目中,但它不起作用(我猜是因为它是用打字稿写的)所以我编辑了代码。
现在,我得到错误InAppBrowser.isAvaialble
不是函数
这是我的 JavaScript 代码
const openUrl = require("tns-core-modules/utils/utils").openUrl;
const alert = require("tns-core-modules/ui/dialogs").alert;
const InAppBrowser = require("nativescript-inappbrowser");
videoCall: function (args) {
try {
const url = "https://example.com";
if (InAppBrowser.isAvailable()) {
const result = InAppBrowser.open(url, {
// iOS Properties
dismissButtonStyle: 'cancel',
preferredBarTintColor: '#453AA4',
preferredControlTintColor: 'white',
readerMode: false,
animated: true,
modalPresentationStyle: 'fullScreen',
modalTransitionStyle: 'partialCurl',
modalEnabled: true,
enableBarCollapsing: false,
// Android Properties
showTitle: true,
toolbarColor: '#6200EE',
secondaryToolbarColor: 'black',
enableUrlBarHiding: true,
enableDefaultShare: true,
forceCloseOnRedirection: false,
// Specify full animation resource identifier(package:anim/name)
// or only resource name(in case of animation bundled with app).
animations: {
startEnter: 'slide_in_right',
startExit: 'slide_out_left',
endEnter: 'slide_in_left',
endExit: 'slide_out_right'
},
headers: {
'my-custom-header': 'MVM'
}
})
alert({
title: 'Response',
message: JSON.stringify(result),
okButtonText: 'Ok'
})
}
else {
openUrl(url);
}
}
catch(error) {
alert({
title: 'Error',
message: error.message,
okButtonText: 'Ok'
})
}
},
您可以将其与文档中的进行比较,以查看我是否做错了什么,在此先感谢
解决方案
您的功能必须是async
并且您需要await
在所有对 InAppBrowser 的调用之前。
import { openUrl } from 'tns-core-modules/utils/utils';
import { alert } from 'tns-core-modules/ui/dialogs';
import InAppBrowser from 'nativescript-inappbrowser';
async function openLink(url) {
try {
if (await InAppBrowser.isAvailable()) {
await InAppBrowser.open(url, {
// iOS Properties
dismissButtonStyle: 'cancel',
preferredBarTintColor: '#453AA4',
preferredControlTintColor: 'white',
readerMode: false,
animated: true,
modalPresentationStyle: 'fullScreen',
modalTransitionStyle: 'partialCurl',
modalEnabled: true,
enableBarCollapsing: false,
// Android Properties
showTitle: true,
toolbarColor: '#6200EE',
secondaryToolbarColor: 'black',
enableUrlBarHiding: true,
enableDefaultShare: true,
forceCloseOnRedirection: false,
// Specify full animation resource identifier(package:anim/name)
// or only resource name(in case of animation bundled with app).
animations: {
startEnter: 'slide_in_right',
startExit: 'slide_out_left',
endEnter: 'slide_in_left',
endExit: 'slide_out_right'
},
headers: {
}
});
}
else {
openUrl(url);
}
}
catch(error) {
alert({
title: 'Error',
message: error.message,
okButtonText: 'Ok'
})
}
推荐阅读
- java - 如何使用 Spring Boot 和注释在测试类中正确注入 Bean
- asp.net - 在 aspx 页面中显示 MVC 视图
- visual-studio-code - 为 JSONSchema 附加属性定义 defaultSnippets
- ios - applicationWillTerminate 与 applicationWillResignActive 与 applicationDidEnterBackground?它们究竟是什么时候触发的?
- c++ - 无法在 Logcat 上显示加密文本
- java - 使用页面哈希导航解析 html
- flutter - Dart 中的 int 类型是值类型还是引用类型?
- flutter - 如何在flutter和firebase中使用三种不同的用户类型进行自动登录?
- angular - 如何使用 Swagger-Codegen 生成的 Typescript-Angular 客户端进行 API 调用
- java - 从我创建项目的那一刻起无法解析 AppCompatActivity