Windows WebView无法调用webpack包装的脚本函数

时间:2018-01-12 13:01:30

标签: javascript webpack uwp

我有UWP C#app,我试图从这样的代码调用我的javascript函数:

webView.InvokeScriptAsync("myCoolFunc", new List<string> { });

如果我在* .html文件中有这样的功能,那么一切都很好:

<Script>
    function myCoolFunc() {
        //do something...
    }
</Script>

如果我使用webpack并将生成的捆绑文件的内容移动到脚本标记中,则不会调用我的函数。 Webpack包含我的函数:

<Script>
    ...
    (function(module, exports, __webpack_require__) {

    "use strict";
    /* WEBPACK VAR INJECTION */(function(process) {
    Object.defineProperty(exports, "__esModule", { value: true });
    const store_1 = __webpack_require__(8);
    function myCoolFunc() {
        //do something...
    }
    exports.updateMyFunc = updateMyFunc;
    ...
</Script>

我应该如何设置webpack.config或webView.invokeFunction以正确调用我的函数?

1 个答案:

答案 0 :(得分:0)

公共访问功能

如果您不想公开您的方法,您可以只编写一个“通信器”功能,它将调用您的webpack-wrapped myCoolFunc(),如下所示:

<Script>
    function uwpCommunicator( functionToCall ) {
        if ( functionToCall === "myCoolFunc" ){
            //call myCoolFunc();
        }
    }
</Script>

评估

您还可以使用eval功能在页面上运行任意脚本:

await webView.InvokeScriptAsync("eval", new string[] { "//your JS code" });