问题标签 [blazor-jsinterop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 BlazorStrap Carousel 上使用 JSRuntime.InvokeAsync 会导致“索引超出范围”错误
在我的 Blazor 服务器应用程序中,我有一个带有 BlazorStrap 轮播的页面和一个用于下载 zip 文件的按钮。Carousel 工作正常,可以毫无问题地循环播放所有图像,直到我单击按钮下载 zip 文件。zip 文件正确下载,但之后我在控制台中收到此错误:
错误:System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task
) 在 Microsoft.AspNetCore .Components.RenderTree.Renderer.GetErrorHandledTask(任务taskToHandle)
我的轮播和下载文件按钮的 HTML:
获取轮播项目的代码:
单击下载文件按钮时的代码:
编辑:我忘了补充说我的渲染模式是 Server 而不是 ServerPrerendered。
blazor - 如何从 Blazor 调用 javascript 函数并取回数据(网络摄像头应用视频流并保存屏幕截图)?
如何从 Blazor 调用 javascript 函数并取回数据(网络摄像头应用视频流并保存屏幕截图)?
嗨,我研究了使用 Blazor 和网络摄像头(目标 -> 浏览器中来自 Cam 的视频流//截取流的屏幕截图//将屏幕截图保存到高清)。 我开始的来源是本教程
我让流开始工作,并添加了代码以从视频流中截取屏幕截图,这也可以,但前提是通过“js”按钮调用。从使用的 Javascript 内部:
我无法弄清楚的要点是:
1. 我想通过 Blazor 的 JS-Interop 调用 js 函数,而不是通过 JavaScript 内部的 Eventlistener。但是我无法为该调用获取正确的代码!?也许答案非常简单,而且是单行的。我对 Javascript 的了解为零(这就是为什么我(必须)使用 Blazor :) )
2.如何将js中的imagedata发回Blazor成byte[]。
我的代码 Blazor/RazorPage:
我从中得到的错误
公共异步任务 TakePicBzBtn()
在浏览器控制台中:
blazor.server.js:21 [2021-06-04T15:44:42.954Z] 错误:Microsoft.JSInterop.JSException:找不到“takePic”(“takePic”未定义)。错误:找不到“takePic”(“takePic”未定义)。
我几乎复制/粘贴代码 JS:
对不起代码墙
c# - 在 Blazor 组件中使用 Javascript addEventListener
我有一个在服务器端呈现的 Blazor 组件。我想在里面放一些可折叠的 div。但是,由于代码是服务器呈现的,因此不会执行 Javascript,因此这些部分不会崩溃。
这是我script.js
文件中的代码:
这是我的main.cshtml
文件:
最后是我Main
的带有可折叠部件的组件:
如果我使用render-mode="Static"
而不是render-mode="Server"
它可以工作,但是由于我的组件内部将有事件,所以对我来说是不可能的。例如,我如何使用 JSInterop 调用我的 JS 脚本来使我的 div 崩溃?
blazor - 使用 IJSRuntime Blazor 时的屏幕呈现问题
首先,我对我的英语水平感到非常抱歉。
我目前正在通过 dotnet core 3.1 blazor 开发一个 Web 项目。
如下面的源代码,我使用 IJSRuntime 来调用需要很长时间的 Javascript 函数。
Javascript函数需要很长时间,所以我添加了下面的源代码来添加一个微调器。
剃须刀页面上的微调器定义如下:
“StateHasChanged()”或“await InvokeAsync(() => StateHasChanged())”也不起作用。
当我使用 Task 而不是 JSRuntime 时它工作正常。
为什么我使用 JSRuntime.InvokeVoidAsync 时它不起作用?
谢谢你,很抱歉读到难读的英语。
javascript - 我的 Blazor 应用程序中的自定义 JavaScript 正在加载但未“工作”,函数不可调用
在我的 Bootstrap 项目中,我使用了几个 JavaScript 文件。我像这样加载这些文件:
App.razor
但是,当我尝试使用我的任何自定义 JavaScript (JavaScript.js) 时,它不起作用。
当我尝试像这样“直接”调用它时:
浏览器给了我错误:
当我尝试像这样通过 Blazor 调用它时:
Blazor 给了我这个错误:
我知道我的 JavaScript.js 正在加载,因为我把它放在文件的末尾:
并且总是弹出警告框。
令人沮丧的是,.JS
我加载的所有其他文件都正常工作。
我做错了什么?
blazor - Blazor JS 互操作 getElementById 以获取组件引用
我需要在 Blazor 中通过其 ID 获取对组件的引用。注意:不使用 ElementReference,因为它用于通用代码。
我已经使用这个 JS Interop 脚本来做焦点,它对我来说很好:
但是我需要从 Blazor 获得的只是对元素(组件)的引用,即返回: document.getElementById(""{elementId}"")
将 elementId 作为参数发送给它。
可能吗?
编辑:我试过这个脚本,但从 Blazor 调用它时总是返回 null:
asp.net-core - 无法从 Blazor Server 应用程序中的新线路调用 JSInterop
打开新电路后,我无法调用 JSInterop 方法。我正在通过从 JS 中打开一个新选项卡来创建新电路,如下所示:
await _jsRuntime.InvokeAsync<object>("open", "/new-tab", "_blank");
接下来,在新选项卡中呈现的组件中,我尝试调用这样的 JS 方法:
一旦调用 jsRuntime,我就会收到以下错误:
任何帮助或建议表示赞赏!
asp.net-core - 在 Blazor 应用程序中打开新选项卡的行为不符合预期
我的 Blazor 应用程序遇到了一个问题,我试图在新选项卡中打开一个页面,虽然它确实打开了页面,但由于某种原因它在 URL 中添加了额外的字符。顶部的指令是这样的:
@page "folder/mypage"
在我的应用程序中,我正在打开这样的标签:
await _jsRuntime.InvokeAsync<object>("open", "folder/mypage", "_blank");
但 URL 显示如下:
myapp.com/folder/folder/mypage
我不确定我错过了什么或做错了什么,如果我能得到任何帮助,我将不胜感激。
c# - Blazor, run non static function when static string change
I'm having a static class with a static string, this string are changed by a Javascript. What is the best way to check for changes of this string in a (non-static) blazor component?
I can have a function run on a timer and let that notify me when a change is made, what other options do I have here?
the function that needs to know if the static string has changed are present in a component that inherits from ComponentBase, if thats any help.
javascript - 使用来自 js 的 blazor 互操作调用非静态方法
在 Blazor 应用程序上工作,它有一个需要从 JS 调用的方法!当我尝试在没有 static 关键字的情况下调用该方法时,出现此错误-
一旦我添加静态,它就会识别并加载它。
这是我在 blazor 组件中的代码 -
JS-
BlazorInterop.js
我不想使用静态关键字作为GetData
非静态方法,我不能从静态方法调用它。
我在哪里错了。