【发布时间】:2019-10-02 12:48:54
【问题描述】:
我们有一堆使用UWP APIs 的 JavaScript 代码,这些代码是为 UWP Javascript 应用程序 (.jsproj) 编写的。现在这个应用程序被重写为一个 UWP C# 应用程序。
C#、JS 和 C++ 中的 UWP API 非常相似,see these examples for ApplicationData.LocationSetting,因此迁移代码不会有太大的努力 - 但仍然是必须完成的工作。
有没有办法让我不必必须用 C# 重写我们所有的 JavaScript 代码才能在我们重写的应用程序中使用它?我可以在 UWP C# 应用程序中以某种方式使用 UWP JS API 吗?
我希望我可以使用简单的webview 以某种方式访问 API(我的想法是 UWP JS 应用程序基本上是只是一个 web 视图),但在我的测试中我无法访问他们在那里。
【问题讨论】:
-
不清楚你的问题是什么。首先,您说您正在将 JS 应用程序重写为 C#。然后你说你不想将你的 JS 代码重写为 C#。可以从 JS 和 C# 调用 UWP API。你能举一个在 JS 中而不是在 C# 中工作的 UWP API 的例子吗?您可以在the UWP samples repo 中找到许多 JS 和 C# 之间的翻译示例。它们调用相同的底层 UWP API。
-
我正在询问一种在 UWP C# 应用程序中使用针对 UWP JS API 编写的 JS 代码的方法(类似于如何通过 Windows 在 UWP JS 应用程序中使用 UWP C# API例如,另一个方向的运行时组件),而不是用 C# 重写该 JS 代码。
-
啊,我明白了。在前两段中,您的意思是“操作系统中的 UWP API”,但在第三段中,您的意思是“我的应用程序中的 UWP API”。这有点用词不当,因为您的 JS 应用程序中的那些函数不是 UWP API;它们只是 JS 函数。您真正要问的是“我有一些用 JS 编写的函数,我想从 C# 中调用它们。”您可以创建一个 WebView,将您的 JS 放入该 WebView,然后使用
AddWebAllowedObject将您的 C# 对象注入 WebView,然后使用InvokeScriptAsync调用函数并收集结果。 -
AddWebAllowedObjectforWindows.*听起来像是一个主意,我会研究一下。谢谢。 (是的,选择合适的词来描述这一点并不容易——UWP JS 似乎已经几乎从文档中消失了:/)
标签: javascript uwp windows-10-universal uwp-c#