2

Awesomium 1.6.5を使用して、アプリケーションのユーザーインターフェイスの大部分をレンダリングしていますが、CSSの読み込みにいくつかの不整合があることに気づきました。ウィンドウを初めて開いたとき、CSSは正常に機能し、スタイルが読み込まれます。

ただし、その時点を過ぎると、スタイルが適用されるかどうかはランダムに見えます。左側のウィンドウは正しく機能しているスタイルを示し、右側のウィンドウは失敗しているスタイルを示しています。

CSSの不整合

これらのボタンはjQueryUI(1.10.1とjQuery 1.9.1)であるため、これらのボタンを作成するJavaScriptが実行されていないと最初に考えたので、ページのHTML内からアプリケーションに移動しました。ユーザーがページを表示する前でもJavaScriptが実行されるようにします。

これは何の違いもありませんでした、そして、問題はまだ続きます。

すべてのCSS(私のスタイルシートとjQuery UIのスタイルシート)は、初期化時に、に渡されるをWebCore介してロードされます。レンダリングされるページには、HTMLにいくつかのスタイルがあります(タグを使用)。WebCoreConfig.CustomCSSWebCore<style>

設定ウィンドウクラスは、実際のWPFウィンドウのインスタンス化と管理を処理するシングルトンであり、メソッドが呼び出されるたびSettingsWindow.Show()に、WPFウィンドウの以前のインスタンスが(Awesomiumと共にWebControl)閉じられ、新しいインスタンスが作成されます。このインスタンスが作成された後、適切なJavaScriptが実行されます。これはInitialise()機能です:

// Host is an instance of AwesomiumHost, a WPF window containing an Awesomium
// WebControl control.
public static void Initialise()
{
    if (Host != null)
    {
        Host.webControl.Close();
        Host.Close();
    }

    Host = new AwesomiumHost(Resources.Markup.SettingsPage)
    {
        Width = 810,
        Height = 640,
        Title = "Settings"
    };

    var webControl = Host.webControl;

    webControl.ExecuteJavascript(Markup.jQuery);
    webControl.ExecuteJavascript(Markup.Cufon);
    webControl.ExecuteJavascript(Markup.CufonOpenSans);
    webControl.ExecuteJavascript(
        "Cufon.replace('.title, .section-hdr', { "
            + "color: '-linear-gradient(#555, #222)'"
        + " }); "
        + "Cufon.replace('.text');"
    );
    webControl.ExecuteJavascript("$(function() {"
        + "$( '#host-choice' ).buttonset();"
        + "$( '#backup-choice' ).buttonset();"
    + "});");
    webControl.ExecuteJavascript(
        "Cufon.replace('.title', { "
            + "color: '-linear-gradient(#555, #222)'"
        + " }); "
        + "Cufon.replace('.text');"
    );
    webControl.ExecuteJavascript(@"
    $(function() {
        $( '#host-choice' ).buttonset(); // Where jQuery should create the buttons
        $( '#backup-choice' ).buttonset();
    });");

    webControl.LoadCompleted += (s, e) =>
        webControl.ExecuteJavascript(
        "$('#x').click();");
    // Sets the state of the "No" button (shown in image) to "pressed."
}

だから私は尋ねます、なぜボタンが一貫してロードされないのですか、そしてこれを修正するために何ができるでしょうか?

4

0 に答える 0