给nsWebProgress addProgressListener每次都失败,
Error: Component returned failure code: 0x80070057
(NS_ERROR_ILLEGAL_VALUE) [nsIWebProgress.addProgressListener]
在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){
- }
- };