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でも有効だったので、この対応付けだけがわからなかった。