我对 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/