0

HTML5/JavaScript でアプリを作成し、OS X の Web ビューとして埋め込みました。それは機能し、現在も機能する Web アプリに組み込まれた設定領域があります。

私の質問は、OS X ネイティブ スタイルの設定パネル ([アプリ名] > [設定]) を使用して Web アプリの設定を調整することは可能ですか?

Web アプリは、設定に JavaScript 変数を使用します。OS X の設定パネルは、JavaScript 変数を読み取って調整し、保存時に更新する必要があります。

サンプル Web コード (test.html):

<p>Number of widgets (sample setting): 
<input type="button" id="buttonLessWidgets" value="&lt;">
<span id="divNumWidgets"></span>
<input type="button" id="buttonMoreWidgets" value="&gt;">
</p>

<script>
var numWidgets = 10;

// Display current number of widgets when the app is opened
document.getElementById("divNumWidgets").innerHTML = numWidgets;

// Adjust sample setting --- this is the part I'm hoping to move to the preferences panel
buttonLessWidgets.onclick = function() { 
    numWidgets -= 1;

    divNumWidgets.innerHTML = numWidgets;
};

buttonMoreWidgets.onclick = function() { 
    numWidgets += 1;

    divNumWidgets.innerHTML = numWidgets;
};
</script>

これは私が簡単に実装できるものですか?HTML5 と JavaScript には慣れていますが、Xcode は初めてです。

4

1 に答える 1

1

それは非常に可能ですが、あなたの側でいくつかの作業が必要であり、それを自動的に行う方法はありません. カスタム設定ペインの実装に関しては、それは単一の質問の範囲外であり、おそらく他の場所で資料を見つけることができます. ただし、実際の JavaScript 部分はそれほど悪くありません。

WebView クラスはwindowScriptObject、JavaScript 環境への参照を取得するために呼び出すことができるメソッドを提供します。次に、標準setValue:forKey:およびvalueForKey:メソッドを使用して、JavaScript コンテキストでグローバル変数を取得および設定できます。

setFrameLoadDelegate:Web ビューのメソッドにカスタム WebFrameLoadDelegate を提供し、デリゲート メソッドに渡された WebScriptObject コンテキストを利用することで、ページが実際に読み込まれる前に、これらの値をページに挿入できますwebView:didClearWindowObject:forFrame:。このメソッドは、JavaScript コンテキストが利用可能になるとすぐに呼び出されますが、ページが実際に読み込まれる前に、カスタム設定変数を挿入できるようになります。

于 2013-02-12T04:48:15.053 に答える