0

非常に不可解なアラートをスローするSWT.Browserウィジェットに小さな問題があります。

ブラウザでGoogleストリートビューAPIをテストしようとしたので、このページを作成しました(実際には何も作成せず、Googleのスニペットから貼り付けただけです)。次のメッセージが表示されます。 代替テキスト

(不可解ですよね?)

私のコードは非常に単純です(ここにあります)

public static void main(String[] args) {
    Display display = Display.getDefault();
    Shell shell = new Shell(display);
    shell.setText("Tentative API Google avec un SWT.Browser");
    shell.setLayout(new GridLayout());
    final Browser browser = new Browser(shell,SWT.BORDER);
    browser.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
    browser.setText("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"+
                    "<html xmlns=\"http://www.w3.org/1999/xhtml\" mlns:v=\"urn:schemas-microsoft-com:vml\">"+
                      "<head>"+
                        "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>"+
                        "<script src=\"http://maps.google.com/maps?file=api&v=2.x&key=AnyKey\" type=\"text/javascript\"></script>" +
                        "<title>"+
                          "Google Maps JavaScript API Example: Simple Streetview Example"+
                        "</title>" +
                        "<script type=\"text/javascript\">var myPano;function initialize(){var fenwayPark = new GLatLng(42.345573,-71.098326);panoramaOptions = { latlng:fenwayPark };myPano = new GStreetviewPanorama(document.getElementById(\"pano\"), panoramaOptions);GEvent.addListener(myPano, \"error\", handleNoFlash);}function handleNoFlash(errorCode){if(errorCode == FLASH_UNAVAILABLE){alert(\"Error: Flash doesn't appear to be supported by your browser\");return;}}</script>" +
                      "</head>" +
                      "<body onload=\"initialize()\" onunload=\"GUnload()\">" +
                        "<div name=\"pano\" id=\"pano\" style=\"width: 500px; height: 300px\">" +
                        "</div>" +
                      "</body>" +
                    "</html>");
    shell.open();

    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

問題は(多かれ少なかれ)APIから発生する可能性があります。これを含めないと、エラーが発生しないためです。とにかく、このページはどの標準ブラウザでも完全に機能します。さらに驚くべきことは、2番目のScriptタグが閉じられていなくてもエラーが発生しないことです(この方法を実行すると、コードがまったくない場合でもエラーは発生しません...)

ここに私は立っています...何をすべきかについて少し混乱しています...(どんな助けでも大歓迎です...)

4

1 に答える 1

0

によって呼び出されるファイル内のすべての HTML コードを置き換えたときに、この問題は解消されました。

browser.setUrl("http://my.url-string.html");

だから実際には問題を解決することはできませんが、もう気にしません...

ps : ローカル ページの URL (Java ファイルと同じディレクトリに配置したもの) を取得する方法は Class.getRessource("My File Path to which I can add its path in the classpath") です。

于 2009-06-30T08:05:53.373 に答える