ページ

2009年9月25日金曜日

WPSU(19) - WebKitで新規ウィンドウを開く(window.openオプション)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

JavaScript の window.open() にはサイズ指定の他、様々なオプションがある。

参考:とほほのJavaScriptリファレンス
ウィンドウ(window) - open()

それぞれのオプションが WebUIDelegate のどのメソッドに対応するのか見てみよう。昨日の HTMLに手を加えて検証用のHTMLを作成してみた。

openchild11.html

このページを開くと各オプションが設定できるようになっている。


"open a child window" をクリックすると、そのオプションを使い window.open() で子ウィンドウが新規に開く。



WPSU で上記HTMLページを開き、どのデリゲートメソッドが呼び出されるか見てみてる。呼出されそうなメソッドを選びログへ書き出してみる。

- (void)webView:(WebView *)sender setFrame:(NSRect)frame
{
NSLog(@"webView:setFrame: %@", NSStringFromRect(frame));
}
- (void)webView:(WebView *)sender setResizable:(BOOL)resizable
{
NSLog(@"webView:setResizable: %d", resizable);
}

- (void)webView:(WebView *)sender setStatusBarVisible:(BOOL)visible
{
NSLog(@"webView:setStatusBarVisible:visible %d", visible);
}

- (void)webView:(WebView *)sender setToolbarsVisible:(BOOL)visible
{
NSLog(@"webView:setToolbarsVisible: %d", visible);
}



結果
2009-09-25 23:00:33.235 WebPageScreenshotUtility[4726:80f] webView:setToolbarsVisible: 0
2009-09-25 23:00:33.235 WebPageScreenshotUtility[4726:80f] webView:setStatusBarVisible:visible 0
2009-09-25 23:00:33.235 WebPageScreenshotUtility[4726:80f] webView:setResizable: 1
2009-09-25 23:00:33.235 WebPageScreenshotUtility[4726:80f] webView:setFrame: {{154, 295}, {400, 300}}



まとめるとこんな感じ。
width, height => webView:setFrame:
location => 不明
toolbar => webView:setToolbarsVisible:
directories => 不明
scrollbars => 不明
menubar => 不明
resizable => webView:setResizable:
status => webView:setStatusBarVisible:


不明のものはほとんどが Safari でも無効なので、使用している JavaScriptエンジンでは対応していないのかもしれない。ただ scrollbars オプションだけは Safariでも有効だったので、この対応付けだけがわからなかった。