gpt4 book ai didi

Javascript 问题适用于 IE 而不适用于 Firefox

转载 作者:行者123 更新时间:2023-11-30 23:46:36 26 4
gpt4 key购买 nike

我在对可在 IE 中运行但不能在 Firefox 中运行的网页进行故障排除时遇到问题。 Firefox 调试器在以下行停止:

btnhelp = new button("btnhelp", framemenu.document.imghelp, "../images/gui/help_o.jpg", "../images/gui/help.jpg", "", "hand", true);

我看到该按钮是在另一个类中定义的,其中包含一些原型(prototype)函数,如下所示:

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,并且永远不会调用下一行,这让我认为创建新按钮的调用存在问题。有谁知道我需要做什么来解决这个问题?

最佳答案

如果 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() 或某种其他形式的元素选择。

关于Javascript 问题适用于 IE 而不适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com