我有一个基于 ASP.NET Core 3 React Redux 模板的应用程序。
我在移动应用程序中使用此应用程序,该应用程序知道如何将 javascript 函数注入(inject)到 webview 中,以便在 native C# 代码和 webview javascript 代码之间进行交互。
为了做到这一点,我需要一个全局方法,页面的其余部分 javascript 可以访问该方法,然后可以从移动应用程序调用注入(inject)的 javascript。
这是我的全局 javascript。它包含在名为 jsinteraction.js 的文件中
export function invokeCSCode(data){
if (invokeCSharpAction)
invokeCSharpAction(data);
else
console.log('invokeCSharpAction not found');
}
我遇到的问题是,当我运行这个网站,然后从我的移动应用程序连接到它时,我收到看起来像 ESLint 错误的信息,并且整个页面只显示该错误。它说:
编译失败
./src/helpers/jsinteraction.js Line 3: 'invokeCSharpAction' is not defined no-undef Line 4: 'invokeCSharpAction' is not defined no-undef
搜索关键字以了解有关每个错误的更多信息。 此错误发生在构建期间,无法消除。
invokeCSharpAction 在应用程序的编译构建期间不会存在,但一旦移动应用程序注入(inject)其代码就会存在。
我认为使用 if (invokeCSharpAction) 将能够处理运行时检测。
我也尝试过在搜索中找到的代码,如下所示:
if (typeof invokeCSharpAction === function)
但我遇到了同样的错误。
我该怎么做?
最佳答案
尝试从窗口访问该函数:
export function invokeCSCode(data){
if (window.invokeCSharpAction)
window.invokeCSharpAction(data);
else
console.log('invokeCSharpAction not found');
}
关于Visual Studio 2019 中的 asp.net core React redux 项目中的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080155/