[英]Can only have one function in JS module
我发现这篇关于如何使用 Blazor 编写 cookie 的帖子(事实证明,这涉及 JavaScript)。 使用帖子中的示例,我制作了自己的版本,具有写入和读取function。 所以它看起来像这样:
<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 在工具提示中所说的:
谁能向我解释一下,为什么这不起作用? 我尝试了谷歌,但由于我对术语感到困惑,所以很难找到有用的东西。 我习惯于 C# 并认为window.blazorExtension
是某种命名空间。
如果有任何帮助,这是我调用函数的方式:
public async Task WriteCookeAsync() {
var test = await JSRuntime.InvokeAsync<object>("blazorExtensions.WriteCookie", "Color", colorCode, 7);
}
如果没有实际检查您的函数的正确性,我可以看到 object window.blazorExtensions
定义不正确。 您需要做的是将WriteCookie
function 定义后的分号更改为逗号,如 JavaScript object 属性是逗号分隔的...
window.blazorExtensions = {
WriteCookie: function (name, value, days) {
//...
},
ReadCookie: function (cname) {
//...
},
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.