我正在尝试创建一个简单的 safari 扩展。我当前的 Safari 版本是 5.1.7,在 Snow Leopard 中运行。
我有 2 个文件:
全局.html
<!DOCTYPE HTML>
<script>
safari.application.addEventListener("command", performCommand, false);
function performCommand(event) {
if (event.command === "traducir") {
var query = event.userInfo;
alert(query);
query = query.replace(/\s+/g,"+");
var newTab = safari.application.activeBrowserWindow.openTab();
newTab.url = "http://translate.google.es/#en/es/" + query ;
}
}
</script>
和注入的脚本:injected.js
document.addEventListener("contextmenu", handleMessage, false);
function handleMessage(msgEvent) {
var sel = '';
sel = window.parent.getSelection()+'';
sel = sel.replace(/^\s+|\s+$/g,"");
safari.self.tab.setContextMenuEventUserInfo(msgEvent, sel);
}
扩展非常简单:
1-当用户选择一个文本或单词时,单击右键并选择引发功能的上下文菜单的项目。
2- 注入的文件获取所选文本的值,并通过 userInfo 与 global.html 共享。
3- global.html 脚本打开一个带有谷歌翻译网址的新标签。
问题是 event.userInfo 始终为 NULL。我在谷歌搜索,所有的例子都是这样的,我不知道问题出在哪里,为什么它总是返回 NULL。