[英]Multiple Javascript conflict
我正在尝试让2个脚本在同一页面上运行,但它们之间的配合效果不好。 一个是isdntek的,名为TabTop http://www.isdntek.com/tagbot/tabtop.htm ,另一个是Clic * Pic http://www.isdntek.com/tagbot/gallery.htm 。 我可以让他们中的任何一个单独运行良好,但不能一起运行。 我环顾四周,试图自己找到解决这个问题的办法,但无济于事。
我将不胜感激,可以提供任何帮助。
谢谢!
您可以将每个脚本包装在一个自调用函数中:
(function(){
//As long as you don't use global variables
//the content here is protected from any interaction with the outside
})();
现在,如果两个代码都使用全局变量,那么不幸的是,任务将更加艰巨。
两个页面都使用RainbowCodeModule6.js文件,它设置了大量的全局变量(之所以如此,是因为它没有在函数中声明局部变量),因此很可能两个脚本试图使用相同的全球化的世界,他们正在发生冲突。 例如(我在此处包装的包装纸)
function changeShades(color){ //--update the vertical column of light/dark shades
var ymax=paletteymax
if (!color){return}
for (i=0; i<ymax; i++){
document.getElementById('colorShades'+i).
style.backgroundColor=colorBrightness(color,(ymax-1-i)/(ymax-1))
}
}
上述不保留它的计数器i
的本地和取决于全球paletteymax
。 我不能说这是否是您的问题,但这表明编程和应用程序体系结构不佳。 另一个例子:
function dec2hex(R,G,B) { //--Converts three R-G-B components to
// a single internet hex color
var hexTest="0123456789ABCDEF";
Rd_hi=R/16; Rd_lo=R%16;
Rd=hexTest.substr(Rd_hi,1)+hexTest.substr(Rd_lo,1)
Gn_hi=G/16; Gn_lo=G%16;
Gn=hexTest.substr(Gn_hi,1)+hexTest.substr(Gn_lo,1)
Bu_hi=B/16; Bu_lo=B%16;
Bu=hexTest.substr(Bu_hi,1)+hexTest.substr(Bu_lo,1)
hexval='#'+Rd+Gn+Bu
return hexval;
}
他们为什么决定将hexTest
保留hexTest
本地,但让所有其他变量都hexTest
全局,这超出了我的范围。 变量R
, G
和B
也是全局变量,但是这里它们保持局部,因为它们是函数声明中的形式参数。
它还使用document.write来部分编写表格,这从来都不是一个好主意。 我认为这只是写得不好的剧本,还有其他东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.