Mozilla重载API方法不起作用

时间:2011-06-28 15:19:39

标签: firefox firefox-addon xpcom

我尝试使用(JavaXPCOM)重新加载网页:

nsIWebBrowser webBrowser = (nsIWebBrowser) browser
                        .getWebBrowser();
nsIWebNavigation webNavigation = (nsIWebNavigation) webBrowser.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);
try {
    nsISHistory sessionHistory = webNavigation.getSessionHistory();
    if (sessionHistory != null) {
        webNavigation = (nsIWebNavigation) sessionHistory.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);
    }
} catch (XPCOMException e) {
}
webNavigation.reload(nsIWebNavigation.LOAD_FLAGS_NONE);

但重装根本不会发生。我尝试使用以下标志强制它,但页面也不刷新:

nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY|nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE

任何人都知道可能是什么原因? 谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试检查错误控制台是否存在语法错误?您似乎试图在JavaScript中使用C ++类型转换。那不行。假设browser<browser>元素,这应该有效:

browser.reload();

或者:

browser.reloadWithFlags(Components.interfaces.nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY|Components.interfaces.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE);

有关<browser>元素的文档,请参阅https://developer.mozilla.org/en/XUL/browser

编辑:鉴于这显然是使用JavaXPCOM,代码似乎是正确的,除了应删除整个try .. catch块。唯一的标志应该是LOAD_FLAGS_BYPASS_CACHE,以确保您没有得到缓存的响应。