如何解决JS模块中只能有一个功能
我发现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在工具提示中所说的:
任何人都可以向我解释,为什么这不起作用?我尝试过Google,但由于我在使用术语方面遇到困难,因此很难找到有用的东西。我习惯了C#,并认为window.blazorExtension
是某种命名空间。
如果有帮助,这是我调用函数的方式:
public async Task WriteCookeAsync() {
var test = await JSRuntime.InvokeAsync<object>("blazorExtensions.WriteCookie","Color",colorCode,7);
}
解决方法
没有实际检查函数的正确性,我可以看到对象window.blazorExtensions
的定义不正确。您需要做的是将WriteCookie
函数定义后的分号更改为逗号,因为JavaScript对象属性以逗号分隔...
window.blazorExtensions = {
WriteCookie: function (name,value,days) {
//...
},ReadCookie: function (cname) {
//...
},};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。