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

Django项目页面无法正常加载使用emojionearea组件的问题求助

Django中emojionearea组件不生效修复方案

核心问题原因

代码存在两个直接导致组件失效的错误:

  • 脚本加载顺序完全颠倒:组件初始化代码写在了所有JS依赖文件的前面,浏览器执行初始化逻辑时,还未加载jQuery、emojionearea本身的脚本文件,根本找不到对应的方法,自然无法渲染组件
  • 重复加载jQuery:先后引入了jQuery 3.2.1 slim版和jQuery 3.6.0完整版,重复加载会覆盖之前已经注册的插件,且slim版本缺少部分jQuery核心功能,本身就不兼容部分第三方组件

修复步骤

  • 调整脚本加载顺序,严格遵循「依赖库先加载,自定义业务逻辑最后执行」的规则,删除重复的jQuery slim版本引入代码
  • 修正后的基础模板代码如下:
{% load static %}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>TODO</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <link rel="stylesheet" href="{% static 'css/emojionearea.min.css' %}">
        <link rel="stylesheet" href="{% static 'css/main.css' %}">
    </head>
    <body>
        {% include 'navbar.html' %}
        {% block content %}
        {% endblock content %}

        <!-- 按顺序加载依赖库,删除重复的jQuery slim引入 -->
        <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
        <script src="{% static 'js/emojionearea.min.js' %}"></script>
        
        <!-- 所有依赖加载完成后再执行初始化 -->
        <script>
            $(document).ready(function() {
                $("#mytextarea").emojioneArea();
            })
        </script>
    </body>
</html>
  • 完成代码调整后做两项校验:
    • 按F12打开浏览器开发者工具,切换到Console面板,刷新页面确认不存在$ is not defined、emojioneArea is not a function、静态资源404类报错
    • 直接访问静态资源路径下的emojionearea.min.css、emojionearea.min.js文件,确认文件可以正常加载,不存在Django静态配置导致的资源找不到问题

额外说明

不需要把textarea移出form标签,emojionearea初始化后会自动和原文本域做值同步,放在form内部提交表单时可以正常传递输入内容(包含emoji),之前的这类修改完全没有必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:27:04