JS模块中只能有一个功能

时间:2020-08-17 17:04:31

标签: javascript c# cookies blazor

我发现this post关于如何使用Blazor编写cookie(事实证明,其中涉及JavaScript)。使用帖子中的示例,我制作了自己的版本,同时具有 Write Read 函数。所以看起来像这样:

<script>
    window.blazorExtensions = {

        WriteCookie: function (name, value, days) {

            var expires;

            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toGMTString();
            }
            else {
                expires = "";
            }

            document.cookie = name + "=" + value + expires + "; path=/";
        };

        ReadCookie: function (cname) {
            var name = cname + "=";
            var decodedCookie = decodeURIComponent(document.cookie);
            var ca = decodedCookie.split(';');
            for(var i = 0; i <ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') {
                c = c.substring(1);
                }
                if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
                }
            }
            return "";
        }
    }
</script>

唯一的问题是...它不起作用:-(

如果我只有WriteCookie方法,它会起作用。如果我只有ReadCookie方法,它会起作用。但是,如果我同时拥有 和,则无法正常工作。

从外观上看,window部分是一个模块,但我可能是错的。但是,这就是VS Code在工具提示中所说的:

Tool tip from blazorExtensions

任何人都可以向我解释,为什么这不起作用?我尝试过Google,但由于我在使用术语方面遇到困难,因此很难找到有用的东西。我习惯了C#,并认为window.blazorExtension是某种命名空间。

如果有帮助,这是我调用函数的方式:

public async Task WriteCookeAsync() {
        var test = await JSRuntime.InvokeAsync<object>("blazorExtensions.WriteCookie", "Color", colorCode, 7);
    }

1 个答案:

答案 0 :(得分:3)

没有实际检查函数的正确性,我可以看到对象window.blazorExtensions的定义不正确。您需要做的是将WriteCookie函数定义后的分号更改为逗号,因为JavaScript对象属性以逗号分隔...

window.blazorExtensions = {
    
    WriteCookie: function (name, value, days) {
        //...
    },

    ReadCookie: function (cname) {
        //...
    },
};
相关问题