1.在DOMWindow.idl添加对应方法的声明,下面我添加了两个方法:
[RequiresAllArguments] void setWindowVisible(in boolean visible);
[RequiresAllArguments] boolean getWindowVisible();
2.然后再WebCore/page/DOMWindow.cpp里面实现这些方法,具体实现可以参考bool DOMWindow::confirm(const String& message)等的实现,一般的实现都是先调用page->chrome()获取chromeclient对象,然后由其交给uidelegate去实现。所以我在WebKit/win/Interfaces/IWebUIDelegate.idl 里面也添加了两个方法:
/*!
@method setWindowVisible:
@param sender The WebView sending the delegate method.
@discussion
- (NSRect)setWindowVisible:(WebView *)sender;
*/
HRESULT setWindowVisible([in] IWebView* sender, [in] boolean visible);
/*!
@method setWindowVisible:
@param sender The WebView sending the delegate method.
@discussion
- (NSRect)setWindowVisible:(WebView *)sender;
*/
HRESULT getWindowVisible([in] IWebView* sender,[out, retval] boolean* visible);
3. 实现之后就可以在js里面使用了,例如:
if(!window.getWindowVisible())
window.setWindowVisible(true);
4.其实还有一个更简单的方法,可以参考webkit里面的DumpRenderTree项目。

本文介绍如何通过在DOMWindow.idl中添加方法声明,并在DOMWindow.cpp中实现这些方法来控制浏览器窗口的可见性。此外,还介绍了如何在js中使用这些方法。

8万+

被折叠的 条评论
为什么被折叠?



