在对在IE中运行但不在Firefox中运行的网页进行故障排除时,我遇到了一个问题。 Firefox调试器停在以下行:
btnhelp = new button("btnhelp", framemenu.document.imghelp, "../images/gui/help_o.jpg", "../images/gui/help.jpg", "", "hand", true);
我看到该按钮是在另一个类中定义的,其中包含一些原型函数:
function button(jscriptname, htmlobj, dnimg, dimimg, action, cursor, enabled, hlimg)
{
//object for managing buttons easily
this.img = htmlobj;
if(htmlobj.name)
this.name = htmlobj.name
else if(htmlobj.id)
this.name = htmlobj.id
else
this.name = "error";
this.upimg = new Image();
this.dnimg = new Image();
this.dimimg = new Image();
this.hlimg = new Image();
this.upimg.src = this.img.src;
this.dnimg.src = dnimg;
this.dimimg.src = dimimg;
if(hlimg)
this.hlimg.src = hlimg;
this.action = action;
this.jscriptname = jscriptname;
if(cursor)
this.cursor = cursor;
else
this.cursor = "hand";
if(enabled)
this.enable();
else
this.disable();
this.img.onclick= new Function(this.jscriptname + ".click();");
this.img.onmouseover= new Function(this.jscriptname + ".mouseover();");
this.img.onmouseout= new Function(this.jscriptname + ".mouseout();");
}
button.prototype.enable = _enable;
button.prototype.disable = _disable;
button.prototype.mouseover = _mouseover;
button.prototype.mouseout = _mouseout;
button.prototype.click = _click;
button.prototype.hilight = _hilight;
function _enable()
{
this.img.src = this.upimg.src;
this.img.style.cursor = this.cursor;
this.enabled = true;
}
function _disable()
{
this.img.src = this.dimimg.src;
this.img.style.cursor = "default";
this.enabled = false;
}
function _hilight(bool)
{
this.img.src = this.hlimg.src;
this.enabled = bool;
}
function _mouseover()
{
if(this.enabled)
this.img.src = this.dnimg.src;
}
function _mouseout()
{
if(this.enabled)
{
this.img.src = this.upimg.src;
}
}
function _click()
{
if(this.enabled)
eval(this.action);
}
当调试器确实按下bthhelp = new按钮行时,它会转到nsSessionStore.js:
handleEvent: function sss_handleEvent(aEvent) {
一旦它退出这个函数,它就不会返回到JavaScript而下一行永远不会被调用,这让我觉得调用中有一个问题就是创建一个新按钮。有谁知道我需要做些什么来解决这个问题?
答案 0 :(得分:3)
如果Firefox正在停止
btnhelp = new button("btnhelp", framemenu.document.imghelp, "../images/gui/help_o.jpg", "../images/gui/help.jpg", "", "hand", true);
唯一可能的问题可能是button
尚未定义,或者framemenu.document.imghelp
存在问题。所有其他参数都是原语,所以我不明白为什么会出现任何问题。
我猜 - 这与任何人都可以在没有更多信息的情况下给你的一样多 - 问题是framemenu
是文档中元素的ID,但不是实际上定义为变量。 Internet Explorer自动将具有有效id属性的所有元素注册为可以从脚本访问的全局变量,而无需使用document.getElementById()
。没有其他浏览器这样做,您必须使用document.getElementById()
或其他形式的元素选择。