我想构建一个具有基本功能的插件:
- 从页面(访问http ://facebook.com、http : //youtube.com等)获取文本 (A) ,例如评论。
- 调用 Web 服务函数处理此文本 (A) 并返回另一个文本 (B)
- 将 (A) 替换为 (B) 并显示给用户
这是我的插件的基本思想。
但我不知道构建它所需的步骤和技术。请帮我澄清一下。
我想构建一个具有基本功能的插件:
这是我的插件的基本思想。
但我不知道构建它所需的步骤和技术。请帮我澄清一下。
您可以使用page-mod,以便在登陆特定页面(Facebook、Youtube)时触发脚本,该脚本可以将数据(评论)传递给main
脚本,以便它可以使用诸如net/之类的东西将其发送到外部服务器小时。使用 DOM 元素保存请求是必要的,以便在响应时,主脚本可以与 page-mod 工作人员进行通信,以用相应的 DOM 元素替换响应文本。
使用 firefox-addon-sdk,有来自教程的视频,它完成了与您正在谈论的内容类似的事情,但它是使用 google translate api:在这里查看
在 XUL 中,首先您需要将扩展的基本结构放在一起。看到这里是一个很好的起点。
然后,您可以通过选择文本并单击上下文菜单(参考)中的项目来获取文本:
<popup id="contentAreaContextMenu">
<menuitem id="yourMenuItem"
label="Name of your service"
insertafter="context-selectall"
oncommand="yourFunction();" />
</popup>
单击时将获得选择的内容(参考):
var selectedText = doc.getSelection().toString();
alert(selectedText);
您通过 xmlhttprequest (参考)调用您的网络服务,当响应到来时,您将所选文本更改为您的服务器返回的文本:
// textToReplace is the text that will replace the currently selected text
var doc = gBrowser.contentDocument;
var sel, range;
sel = doc.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(doc.createTextNode(textToReplace));
}
你仍然需要做很多验证,但这就是你需要做的。