Safari 5.1扩展程序开发错误 - > event.userInfo在尝试获取所选文本时返回null

时间:2012-10-21 19:32:36

标签: safari-extension

我正在尝试创建一个简单的safari扩展。我当前的Safari版本是在Snow Leopard中运行的5.1.7。

我有两份文件:

global.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>

和注入的脚本:inject.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脚本使用google translate的网址打开一个新标签页。

问题是event.userInfo始终为NULL。我在谷歌搜索,所有的例子都是这样的,我不知道问题在哪里,为什么它总是返回NULL。

1 个答案:

答案 0 :(得分:0)

这可能是由于Extension Builder中的“访问级别”设置过于严格。尝试将下拉菜单设置为“全部”,并勾选“包含安全页面”复选框。