javascript - 如何修改 Safari 上下文菜单扩展中的文本

标签 javascript safari contextmenu

我对 javascript 和编写扩展来说是全新的,所以我需要你的帮助。

我正在尝试创建一个 Safari 上下文菜单项,该菜单项将允许用户在选择输入窗口中的部分或全部文本时修改他输入的文本(就像我在其中提出这个问题的那样) )。
我的扩展程序显示在上下文菜单中,并且单击它会调用我的 global.html 文件,该文件又会调用我的结束脚本 inject.js ,文件如下所示:

function handleMessage(event) {
  var range = window.getSelection();//.getRangeAt(0);
   console.log("range:"+range);
  var selectionParentText = range.startContainer.textContent;
  range.startContainer.textContent = selectionParentText.substring(0,range.startOffset) + "[b]" + range.toString() + "[/b]" + selectionParentText.substring(range.endOffset,selectionParentText.length);
}

safari.self.addEventListener("message", handleMessage, false);

日志显示我选择的文本的值,但第 4 行生成 TypeError: Result of expression 'range.startContainer' [undefined] is not an object. 错误。修改所选文本的正确方法是什么?

最佳答案

function handleMessage(event) 
{
  var e = document.activeElement;
  if (e.tagName = "textarea")
  {
    var selLen = e.selectionEnd - e.selectionStart;
    e.value = e.value.substr(0, e.selectionStart) + "[b]" + e.value.substr(e.selectionStart, selLen) + "[/b]" + e.value.substr(e.selectionEnd, e.value.length);
  }
}

safari.self.addEventListener("message", handleMessage, false);

关于javascript - 如何修改 Safari 上下文菜单扩展中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284658/

相关文章:

javascript - d3 获取 Band Scales 的反转值

javascript - Mongoose 更新条件匹配错误的对象

css - 100% 高度 img 上带有父级填充的 Safari 边框高度错误

c# - 如何创建不可选择的上下文菜单项?

android - 如何从上下文菜单获取有关 RecyclerView 项目的信息

javascript - Webpack 包验证但节点服务器抛出语法错误

javascript - 在QML中转储或序列化对象

javascript - iPad 网络应用程序 : Detect Virtual Keyboard Using JavaScript in Safari?

php - 如何正确加载和 HTML 嵌入受密码保护的文件?

c# - 在 C# WPF 中单击托盘通知后,第一次右键单击时不会打开上下文菜单?