1

さまざまなアラートを表示するFirefoxアドオンがあります。使用するアラートのタイプをユーザーが選択できるように設定する方法はありますか?現在、2種類のアラートがあります。標準のJavaScriptアラートとalertNotification。ユーザーが選択できる2つの異なるアラートを含むメニュー項目を作成する方法はありますか?しかし、これをJavaScriptでどのようにコーディングするかはわかりません。設定ページはXULにあります。

現在、両方のアラートのコード:両方のアラートのコード:

if(resultEmail) {
               prompts.alert(null, "Test", "Email Address Detected");


  //Other form of alert. 
          var alertsService = Components.classes["@mozilla.org/alerts-service;1"].
          getService(Components.interfaces.nsIAlertsService);
          alertsService.showAlertNotification("", 
                                "Test","Email Detected", 
                                false, "", null, ""); }

ユーザーが使用するアラートを選択してXULウィンドウで設定できるように設定するにはどうすればよいですか?これが可能かどうかわからない。

現在、これを以下に実装していますが、使用するアラートをユーザーに選択させることはできません。

どのアラートを選択するための現在のコード:

var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
                var customAlert = prefManager.getBoolPref("extensions.yourextension.customalert");

        if(resultEmail) {
        if(!!customAlert)
                            {

                            // Show your alert
                             prompts.alert(null, "Privacy Exposure Detected", "Email Address Detected \n\nThis data is a privacy risk and should be reviewed");

                        } else {

                            // Show built in alert system
                            var alertsService = Components.classes["@mozilla.org/alerts-service;1"].
                           getService(Components.interfaces.nsIAlertsService);
                            alertsService.showAlertNotification("chrome://spellchecker/content/images/stop.png", 
                                "Privacy Exposure Detected",vrs_getWin.document.getElementById(elementT).value+ "This data is a privacy risk", 
                                false, "", null, "");

                        }

XULウィンドウコード:

<vbox>
        <hbox>
            <label control="custom-alert" value="Custom Alerts"/>
            <checkbox id="custom-alert" preference="customalert"/>
        </hbox>




            <button id="checkerOkButton" label="&savebutton.label;" oncommand="namespace_highlight.setPrefs();"/>
            <button id="checkerCancelButton" label="&cancelbutton.label;" oncommand="window.close();"/>
        </hbox>

    </vbox>

問題は、チェックボックスが入力を保存していないように見え、デフォルトで標準アラートになっていることです。

どんな助けでもありがたいです

4

2 に答える 2

0

ユーザーが希望するドロップダウンの選択肢を入力要素に保存し、アラートを表示する前にクエリを実行できます。これは、クロスページサポートの将来の記憶のためにクッキーに保存することもできます

//OR get type from session variable or cookie or whatever
var type = 1;
type = document.getElementById("userchoiceofalert").value;

function showAlert(type, subject, message)
{
if (type===1) {
    prompts.alert(null, subject, message);
} else {

  //Other form of alert. 
          var alertsService = Components.classes["@mozilla.org/alerts-service;1"].
          getService(Components.interfaces.nsIAlertsService);
          alertsService.showAlertNotification("", 
                                subject,message, 
                                false, "", null, ""); 
    }
}

//in your function
if(resultEmail) {
showAlert(type,"Test", "Email Address Detected"); 
}
于 2013-03-05T09:13:52.073 に答える
0

プレウィンドウまたはオプションを保存する方法が既にあると仮定しています。したがって、次のようなものを使用して、その設定を作成できます。

<label control="custom-alert" value="カスタム アラート"/>
<checkbox id="custom-alert" preference="customalert"/>

次に、prefManager コンポーネントを使用して、JavaScript で選択した設定を取得します。

var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);

prefManager サービスを取得し、そこから値を確認できます (この場合は、チェックボックスを使用しているため、ブール値の設定です:

var customAlert = prefManager.getBoolPref("extensions.yourextension.customalert");

次に、アラートの種類を表示している場所:

if(!!customAlert)
{

    // アラートを表示
    prompts.alert(null, "テスト", "電子メール アドレスが検出されました");

} そうしないと {

    // 組み込みのアラート システムを表示
    var alertsService = Components.classes["@mozilla.org/alerts-service;1"]....

}

prefs.js ファイルに次のような設定があることを確認してください。

// プリファレンスのデフォルト値
pref("extensions.yourextension.customalert", false);
于 2013-03-05T09:13:54.953 に答える