function sc_HTMLParser(aHTMLString){
var parseDOM = content.document.createElement('div');
parseDOM.appendChild(Components.classes['@mozilla.org/feed-unescapehtml;1']
.getService(Components.interfaces.nsIScriptableUnescapeHTML)
.parseFragment(aHTMLString, false, null, parseDOM));
return parseDOM;
}
变为
this.HTMLParser = function(aHTMLString){
var parseDOM = content.document.createElement('div');
parseDOM.appendChild(Components.classes['@mozilla.org/feed-unescapehtml;1']
.getService(Components.interfaces.nsIScriptableUnescapeHTML)
.parseFragment(aHTMLString, false, null, parseDOM));
return parseDOM;
}
和
searchcontents = req.responseText;
parsedHTML = sc_HTMLParser(searchcontents);
sitefound = sc_sitefound(compareuris, parsedHTML);
变为
searchcontents = req.responseText;
alert(searchcontents);
parsedHTML = this.HTMLParser(searchcontents);
alert(parsedHTML);
sitefound = this.sitefound(compareuris, parsedHTML);
模块化代码会警告搜索内容,但不会警告解析的HTML。为什么?怎么解决?
更新:
j0rd4n,它是:
function SiteCompare() {
this.finishSiteCompare = function(downloaduris, compareuris, tryinguri) {
// code
searchcontents = req.responseText;
alert(searchcontents);
parsedHTML = this.HTMLParser(searchcontents);
alert(parsedHTML);
sitefound = this.sitefound(compareuris, parsedHTML);
// code
}
this.HTMLParser = function(aHTMLString) {
//code
}
}
甚至没有打电话。
更新:
错误控制台说this.HTMLParser不是函数
答案 0 :(得分:0)
你的调用逻辑是否在与this.HTMLParser定义相同的函数范围内执行?
尝试在HTMLParser中放置一个警告声明,看看是否进行了调用。这听起来像是抛出异常并离开你的剧本。
答案 1 :(得分:0)
问题是this
在函数定义中和调用它时不同。定义HTMLParser
时,这是SiteCompare
对象,当调用this.HTMLParser(searchContents)
时,this
可能是窗口对象。因此,您获得的错误意味着window.HTMLParser
不是函数。
要解决此问题,您需要在HTMLParser
对象之外定义SiteCompare
方法,或者(可能更好)使用SiteCompare
对象来调用HTMLParser
。例如:
var parser = new SiteCompare();
parsedHTML = parser.HTMLParser(searchcontents);