给nsWebProgress addProgressListener每次都失败,
[quote]
Error: Component returned failure code: 0x80070057
(NS_ERROR_ILLEGAL_VALUE) [nsIWebProgress.addProgressListener]
[/quote]
在google 一下发现很多人都遇到这个问题,在addProgressListener函
数里面,首先需要从ProgressListener get WeakReference,添加的listener
实际是WeakReference,所以ProgressListener需要实现nsISupportsWeakReference
接口,一个好用的ProgressListener代码如下:
const Cc = Components.classes; const Ci = Components.interfaces; const Cr = Components.results; const nsISupports = Ci.nsISupports; const nsIWebProgressListener = Ci.nsIWebProgressListener; const nsISupportsWeakReference = Ci.nsISupportsWeakReference; function ProgressListener(){ }; ProgressListener.prototype = { QueryInterface: function(aIID){ if(aIID.equals(nsIWebProgressListener) || aIID.equals(nsISupportsWeakReference) || aIID.equals(nsISupports)) return this; throw Cr.NS_NOINTERFACE; }, onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus){ }, onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress){ }, onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage){ }, onSecurityChange: function(aWebProgress,aRequest,aState){ } };