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

如何将Grammarly编辑器插件封装为可用于EventListener的函数

如何将Grammarly编辑器插件封装为可通过EventListener调用的函数

问题描述

我需要将以下Grammarly编辑器插件相关代码封装为函数,以便添加到EventListener中调用。
待封装的代码如下:

<script src="https://unpkg.com/@grammarly/editor-sdk?clientId=YOUR_CLIENT_ID"></script>
<grammarly-editor-plugin>
<textarea></textarea>
</grammarly-editor-plugin>

期望的代码形式参考(暗黑模式插件写法):

<script src="https://cdn.jsdelivr.net/npm/darkmode-js@1.5.7/lib/darkmode-js.min.js"></script>
<script>
function addDarkmodeWidget() {
new Darkmode().showWidget();
}
window.addEventListener('load', addDarkmodeWidget);
</script>

解决方案

你可以通过动态加载SDK脚本并创建DOM元素的方式,将Grammarly编辑器的初始化逻辑封装成函数,再绑定到页面加载事件上。以下是两种实用实现方式:

方式一:动态创建全新的编辑器元素

这种方式会在页面加载完成后,自动创建grammarly-editor-plugin容器和内部的textarea,并添加到页面指定位置:

<script>
function addGrammarlyEditor() {
  // 动态创建Grammarly SDK脚本标签
  const grammarlyScript = document.createElement('script');
  grammarlyScript.src = 'https://unpkg.com/@grammarly/editor-sdk?clientId=YOUR_CLIENT_ID';
  grammarlyScript.async = true;

  // 脚本加载完成后初始化编辑器
  grammarlyScript.onload = function() {
    // 创建Grammarly插件容器
    const pluginContainer = document.createElement('grammarly-editor-plugin');
    // 可按需设置插件属性,比如深色主题:pluginContainer.setAttribute('theme', 'dark');

    // 创建文本输入框
    const textarea = document.createElement('textarea');
    textarea.placeholder = '请输入文本...';

    // 组装元素并添加到页面(示例添加到body,可替换为你需要的DOM节点)
    pluginContainer.appendChild(textarea);
    document.body.appendChild(pluginContainer);
  };

  // 将脚本添加到页面头部
  document.head.appendChild(grammarlyScript);
}

// 页面加载完成后触发编辑器初始化
window.addEventListener('load', addGrammarlyEditor);
</script>

方式二:为页面已有的textarea添加Grammarly插件

如果页面中已经存在需要绑定Grammarly的textarea,可以用这种方式,直接将目标textarea包裹进grammarly-editor-plugin容器:

<!-- 页面中已有的文本输入框 -->
<textarea id="target-textarea" placeholder="请输入文本..."></textarea>

<script>
function addGrammarlyEditor() {
  const grammarlyScript = document.createElement('script');
  grammarlyScript.src = 'https://unpkg.com/@grammarly/editor-sdk?clientId=YOUR_CLIENT_ID';
  grammarlyScript.async = true;

  grammarlyScript.onload = function() {
    // 获取页面中已有的textarea
    const targetTextarea = document.getElementById('target-textarea');
    if (!targetTextarea) return;

    // 创建Grammarly插件容器
    const pluginContainer = document.createElement('grammarly-editor-plugin');
    
    // 将textarea替换为插件容器,再把textarea放入容器内
    targetTextarea.parentNode.replaceChild(pluginContainer, targetTextarea);
    pluginContainer.appendChild(targetTextarea);
  };

  document.head.appendChild(grammarlyScript);
}

window.addEventListener('load', addGrammarlyEditor);
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:30:53