You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入YouTube视频的.NET8 Blazor应用突发Illegal invocation JS错误求助

解决方案:修复YouTube嵌入导致的Permissions非法调用错误

问题分析

你遇到的TypeError: Failed to execute 'query' on 'Permissions': Illegal invocation错误,是近期YouTube播放器JS更新引发的兼容性问题——YouTube的脚本在调用navigator.permissions.query时丢失了正确的上下文(this指向),导致方法调用不符合浏览器规范,和你的Blazor代码、iframe嵌入方式无关。

修复步骤

方法1:全局JS注入

在Blazor应用的wwwroot/js/site.js文件中添加以下代码:

// 修复YouTube播放器的Permissions.query调用上下文问题
if (navigator.permissions?.query) {
  const originalQuery = navigator.permissions.query;
  navigator.permissions.query = function(...args) {
    return originalQuery.apply(navigator.permissions, args);
  };
}

然后在index.html中确保该脚本在Blazor初始化前加载:

<script src="js/site.js"></script>
<script src="_framework/blazor.webassembly.js"></script>

方法2:页面级JS注入

如果只想在含视频的页面修复,可在对应Blazor组件中添加以下代码:

@inject IJSRuntime JSRuntime

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
        await JSRuntime.InvokeVoidAsync("eval", @"
            if (navigator.permissions?.query) {
                const originalQuery = navigator.permissions.query;
                navigator.permissions.query = function(...args) {
                    return originalQuery.apply(navigator.permissions, args);
                };
            }
        ");
    }
}

验证

添加代码后重新运行应用,加载含YouTube视频的页面,调试中断的问题应该会消失。这个修复是临时方案,直到YouTube官方修复播放器脚本的上下文绑定问题。

内容的提问来源于stack exchange,提问作者Simon Bailey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:53:19