Google Input Tools无法在Google Apps Script HTML页面输入天城文的问题
解决Google Apps Script HTML页面无法接收Google Input Tools输入的问题
可能的原因
- Google Apps Script的HTML页面运行在受限制的iframe沙箱环境中,Chrome扩展的输入注入逻辑可能被沙箱策略拦截。
- Apps Script默认的内容安全策略(CSP)限制了外部扩展的脚本注入行为,导致Google Input Tools无法正常工作。
解决方案
1. 调整内容安全策略(CSP)
在HTML文件的<head>中添加自定义CSP配置,允许Google Input Tools所需的脚本源:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' https://www.google.com; style-src 'self' 'unsafe-inline';">
注:unsafe-inline会降低一定安全性,但这是让Google Input Tools正常注入输入逻辑的必要设置。
2. 手动绑定输入事件监听
为输入框添加显式的input事件监听,确保输入内容能被正确捕获:
document.getElementById('devanagari-input').addEventListener('input', function(e) { this.value = e.target.value; });
这种方式可以绕过扩展可能被拦截的事件注入,直接同步输入值。
3. 修改沙箱模式
在Apps Script的服务端代码中,将HTML输出的沙箱模式设置为NATIVE,减少环境限制:
function doGet() { return HtmlService.createHtmlOutputFromFile('index') .setSandboxMode(HtmlService.SandboxMode.NATIVE); }
NATIVE模式会放宽沙箱限制,允许更多外部扩展与页面交互。
4. 替换为contenteditable容器
如果普通<input>元素仍有问题,尝试使用contenteditable属性的<div>替代:
<div id="devanagari-input" contenteditable="true"></div>
通过JavaScript获取输入内容:
const inputContent = document.getElementById('devanagari-input').innerText;
这种方式可以避开input元素的特殊拦截机制。
内容的提问来源于stack exchange,提问作者Mike James
相关产品推荐
相关产品推荐

