0

シンプルなサファリ拡張機能を作成しようとしています。私の現在のバージョンの Safari は、Snow Leopard で動作する 5.1.7 です。

私は2つの文書を持っています:

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>

および注入されたスクリプト: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- ユーザーが 1 つのテキストまたは単語を選択したら、右ボタンをクリックして、機能を起動するコンテキスト メニューの項目を選択します。

2- 挿入されたファイルは、選択されたテキストの値を取得し、userInfo を介して global.html と共有されます。

3- global.html スクリプトは、Google 翻訳の URL を含む新しいタブを開きます。

問題は、event.userInfo が常に NULL であることです。私は Google で検索していましたが、すべての例がこのようなもので、問題がどこにあるのか、なぜ常に NULL を返すのかわかりません。

4

1 に答える 1

0

これは、Extension Builder の「アクセス レベル」の設定が厳しすぎることが原因である可能性があります。ドロップダウン メニューを [すべて] に設定し、[保護されたページを含める] チェックボックスをオンにしてみてください。

于 2012-12-12T20:11:14.797 に答える