Windows.event未定义-firefox中出现Javascript错误
我正在使用javascript更改鼠标上方asp按钮的一些设置。它在IE中工作,但在Firefox中不工作。是否有其他javascript代码支持几乎所有浏览器?我的代码如下Windows.event未定义-firefox中出现Javascript错误,javascript,asp.net,onmouseover,Javascript,Asp.net,Onmouseover,我正在使用javascript更改鼠标上方asp按钮的一些设置。它在IE中工作,但在Firefox中不工作。是否有其他javascript代码支持几乎所有浏览器?我的代码如下 <script type="text/javascript"> var previousColor; function Changecolor() { previousColor = window.event.srcElement.style.backgr
<script type="text/javascript">
var previousColor;
function Changecolor() {
previousColor = window.event.srcElement.style.backgroundColor;
window.event.srcElement.style.backgroundColor = "Blue";
window.event.srcElement.style.cursor = "hand";
}
function RestoreColor() {
window.event.srcElement.style.backgroundColor = previousColor;
}
</script>
<asp:Button ID="btnSearch" runat="server" BackColor="#800000" Font-Bold="True" Font-Names="Arial" onmouseover="Changecolor();" onmouseout="RestoreColor();" ForeColor="White" Height="28px" OnClick="btnSearch_Click2" Text="Search Jobz" Width="117px" />
var-previousColor;
函数Changecolor(){
previousColor=window.event.srcElement.style.backgroundColor;
window.event.srcielement.style.backgroundColor=“蓝色”;
window.event.srcmelement.style.cursor=“hand”;
}
函数RestoreColor(){
window.event.srcElement.style.backgroundColor=previousColor;
}
看一看Mozilla Developer Center上的文档。在Internet Explorer中,全局事件对象是在触发事件时创建的。在符合标准的浏览器中,事件对象作为分配给触发事件的函数的第一个参数传递。如果您的事件是在HTML中定义的,那么事件对象将在变量名event
下创建,并且可以传递给您正在调用的函数
还要注意的是,event.srcmelement
属性仅适用于IE,大多数其他浏览器使用event.target
考虑到这一点,您的函数应该如下所示:
<script>
var previousColor;
function Changecolor(evt) {
var srcEl = evt.srcElement || evt.target;
previousColor = srcEl.style.backgroundColor;
srcEl.style.backgroundColor = "Blue";
srcEl.style.cursor = "pointer";
}
function RestoreColor(evt) {
var srcEl = evt.srcElement || evt.target;
srcEl.style.backgroundColor = previousColor;
}
</script>
<asp:Button ID="btnSearch" runat="server" BackColor="#800000" Font-Bold="True" Font-Names="Arial" onmouseover="Changecolor(event);" onmouseout="RestoreColor(event);" ForeColor="White" Height="28px" OnClick="btnSearch_Click2" Text="Search Jobz" Width="117px" />
var-previousColor;
功能更改颜色(evt){
var srcEl=evt.srcelment | | evt.target;
previousColor=srcEl.style.backgroundColor;
srcEl.style.backgroundColor=“蓝色”;
srcEl.style.cursor=“指针”;
}
功能恢复颜色(evt){
var srcEl=evt.srcelment | | evt.target;
srcEl.style.backgroundColor=先前的颜色;
}
为什么不使用CSS(及其:hover
伪类)而不是JS
但如果出于某些原因需要使用JS,只需将对元素的引用作为函数参数传递:
function Cangecolor(ref){
prevousColor = ref.style....;
...
onmouseover="changecolor(this)"
现在你的代码不起作用,因为IE使用不同的事件模型(好的浏览器使用W3C事件模型,但IE使用自己的)。您可以在以下网址阅读有关W3C/IE事件模型的信息:您不需要为事件对象操心。此外,游标CSS属性的正确值是“指针”,而不是IE特定的“手”,除非您需要支持IE 5或5.5
<script type="text/javascript">
var previousColor;
function changeColor(el) {
var s = el.style;
previousColor = s.backgroundColor;
s.backgroundColor = "Blue";
s.cursor = "pointer";
}
function restoreColor(el) {
el.style.backgroundColor = previousColor;
}
</script>
<asp:Button ID="btnSearch" runat="server" BackColor="#800000"
Font-Bold="True" Font-Names="Arial"
onmouseover="changeColor(this);" onmouseout="restoreColor(this);"
ForeColor="White" Height="28px" OnClick="btnSearch_Click2"
Text="Search Jobz" Width="117px" />
var-previousColor;
功能更改颜色(el){
var s=el.style;
previousColor=s.backgroundColor;
s、 backgroundColor=“蓝色”;
s、 游标=“指针”;
}
功能恢复色(el){
el.style.backgroundColor=先前的颜色;
}
我在下面的代码中遇到了同样的问题(firefox中的window.event)
<html>
<body onkeyup="fClosePop();">
</body>
<script language="javascript">
function fClosePop(){
var e= (window.event)?event.keyCode:evt.which;
if( e.keyCode ==27)
{
try
{
alert(1);
}
catch(e)
{
}
}
}
</script>
</html>
函数fClosePop(){
var e=(window.event)?event.keyCode:evt.which;
如果(e.keyCode==27)
{
尝试
{
警报(1);
}
捕获(e)
{
}
}
}
然后我尝试调整代码,找到了下面的解决方案。
我刚刚从函数传递了事件
<html>
<body onkeyup="fClosePop(even);">
</body>
<script language="javascript">
function fClosePop(e){
if( e.keyCode ==27)
{
try
{
alert(1)
}
catch(e)
{
}
}
}
</script>
</html>
函数fClosePop(e){
如果(e.keyCode==27)
{
尝试
{
警报(1)
}
捕获(e)
{
}
}
}
我希望这将对您有所帮助。您为什么要把它弄得如此困难?只要使用CSS就可以了。事实上,CSS更适合于这类事情,尽管如果没有感谢的话,
:hover
在IE6中是不起作用的!它起作用了。。但是,游标不起作用。。我在Google Chrome和FirefoxOk中都看不到手符号。。我用“指针”代替“手”。。现在它对我起作用了:-)非常感谢……啊,你赢了我。很高兴我能帮上忙。不是因为他问题中指定的代码,但我想我应该在答案中包含事件对象,以防他的示例是大部分代码的简化版本,就像通常的情况一样:)+1@AndyE:同意,如果您还没有这样做,我可能也会这样做。:hover
伪类对IE 6中的
以外的元素不起作用。如果您必须关心IE6,请使用或更好