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

SvelteKit-Tauri应用自定义窗口标题栏失败求助

SvelteKit-Tauri自定义标题栏JS报错解决方法

问题原因

你在脚本顶层直接调用document.getElementById时,组件DOM尚未渲染完成,会返回null,进而导致addEventListener调用失败。另外,Svelte提供了更适配框架特性的事件绑定方式,无需手动操作原生DOM。

修复代码

使用Svelte的事件指令替换原有DOM操作逻辑,彻底避免DOM渲染时机问题:

<script>
  import { appWindow } from '@tauri-apps/api/window';

  const minimizeWindow = () => appWindow.minimize();
  const toggleMaximizeWindow = () => appWindow.toggleMaximize();
  const closeWindow = () => appWindow.close();
</script>

<div data-tauri-drag-region class="titlebar">
    <div class="titlebar-button" on:click={minimizeWindow}>
        <img src="https://api.iconify.design/mdi:window-minimize.svg" alt="minimize" />
    </div>
    <div class="titlebar-button" on:click={toggleMaximizeWindow}>
        <img src="https://api.iconify.design/mdi:window-maximize.svg" alt="maximize" />
    </div>
    <div class="titlebar-button" on:click={closeWindow}>
        <img src="https://api.iconify.design/mdi:close.svg" alt="close" />
    </div>
</div>

<style>
    .titlebar {
        height: 30px;
        background: #329ea3;
        user-select: none;
        display: flex;
        justify-content: flex-end;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
    }
    .titlebar-button {
        display: inline-flex;
        justify-content: center;
        align-items: center;
        width: 30px;
        height: 30px;
    }
    .titlebar-button:hover {
        background: #5bbec3;
    }
</style>

关键检查项

  • 确认tauri.config.json中windows配置的decorations为false,这是自定义标题栏的必要前提。
  • 确保已安装依赖:
    npm install @tauri-apps/api
    
  • 若使用Tauri v2,需保证依赖版本与框架匹配,API路径无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 12:51:35