我正在使用javascript在鼠标悬停时更改asp按钮的某些设置。它在IE中工作。但不适用于Firefox。还有其他任何支持几乎所有浏览器的JavaScript代码吗?我的代码如下
<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" />
答案 0 :(得分:8)
在events上查看Mozilla开发人员中心文档。在Internet Explorer中,触发事件时会创建全局事件对象。在符合标准的浏览器中,事件对象作为分配给触发事件的函数的第一个参数传递。如果您的事件是在HTML中定义的,则事件对象是在变量名event
下创建的,并且可以传递给您正在调用的函数。
另请注意,event.srcElement
属性仅限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" />
答案 1 :(得分:1)
为什么不使用CSS(带有:hover
伪类)代替JS?
但是如果由于某些原因需要使用JS,只需将对元素的引用作为函数参数传递:
function Cangecolor(ref){
prevousColor = ref.style....;
...
onmouseover="changecolor(this)"
现在你的代码不起作用,因为IE使用不同的事件模型(好的浏览器使用W3C事件模型,但IE使用它自己的)。您可以在以下位置阅读有关W3C / IE事件模型的信息:How to equalize the IE and W3C event models]
答案 2 :(得分:1)
您无需为事件对象烦恼。此外,光标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" />
答案 3 :(得分:1)
我在下面的代码中遇到了同样的问题(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>
然后我尝试调整代码并找到下面的解决方案。 我刚刚从函数中传递了这个事件。
<html>
<body onkeyup="fClosePop(even);">
</body>
<script language="javascript">
function fClosePop(e){
if( e.keyCode ==27)
{
try
{
alert(1)
}
catch(e)
{
}
}
}
</script>
</html>
我希望这会对你有所帮助。