【问题标题】:Click events and MouseOut events not working in chrome单击事件和 MouseOut 事件在 chrome 中不起作用
【发布时间】:2012-07-13 04:18:45
【问题描述】:

无法进入 Chrome 和 Firefox 中的 onclick 和 onmouseout/over 事件的功能。任何不在 Chrome 和 FF 中工作的原因都可以解决这个问题。这些在 IE9 和 Opera 中运行良好..

html页面代码如下:

     <script language="JavaScript" for="SmartGridCell" event="onclick()">
    sg_CellClick(event.srcElement);
</script>

<script language="JavaScript" for="SmartGridCell" event="onmouseover()">
    sg_MouseOverCell(event.srcElement);
</script>  

更多点击事件...

     <script language="javascript" for="optSet" event="onclick()">
    mc_SelectAnElement(this, document.getElementsByName('optSet'));
</script>

<script language="javascript" for="answerChoice" event="onclick()">
    mc_SelectAnElement(this, document.getElementsByName('answerChoice'));
</script>

这是我到目前为止所做的,但我无法在 Chrome 中触发事件...

 <script language="JavaScript">

  var s1=document.getElementsByName('optSet');

  for (var i=0;i<s1.length;i++)
  {
    s1[i].addEventListener("click",mc_SelectAnElement(this, document.getElementsByName('answerChoice')),false);
  }

</script>

也试过这个,这个 sn-p 让我进入函数,但选择的值永远不会持续......

 if (document.addEventListener) 
{
    document.addEventListener("click",function (e){
    var srcElement= e.target;
    var tagName= srcElement.tagName;
    if(tagName="optSet")
    {
        mc_SelectAnElement(srcElement, document.getElementsByName('optSet'));
    }
    //mc_SelectAnElement(this, document.getElementsByName('optSet'));
    },true);
}

谢谢-

【问题讨论】:

  • 哦,奇怪的 IE。甚至想像这样的事情都行不通!
  • 是的,我不得不同意,这个脚本真的很老了......我自己想不出来。

标签: javascript events cross-browser onclick cross-platform


【解决方案1】:

在现代 JavaScript 中,它会是这样的:

if (document.addEventListener) {
    document.addEventListener('click', function (e) {
        var el = e.target;
        var id = el.id;

        // the "for" attribute refers to an ID
        if (id == 'SmartGridCell' || id == 'SmartGridHeaderCell') {
            sg_CellClick(el);
        }
    }, true);

    /* repeat the same for "mouseover" and "mouseout" */
}

您也可以保留旧脚本,它们不会发生冲突。

Why this works in IE——因为他们在 20 年前发明了自己丑陋的 KnockoutJS。当然,它是非标准的(DOM 2 表示 Reserved for future use 表示 forevent 属性)。

【讨论】:

  • 嘿,谢谢,让我试试这个,我怎么能说为 OnMouseover 事件实现这个。
  • 尝试了你在另一个点击事件活动中提到的同样的事情,但我仍然面临同样的问题,在点击事件下提到了同一主题中的旧 js 代码......
  • @Bluesaph,你没看错,只是你应该检查的不是tagName,而是目标元素的ID。 for 属性中的内容是一个 ID。
  • 另外,将目标元素作为第一个参数传递给mc_SelectAnElement(不是this,它们不一样)。
  • :谢谢,由于您提到的代码更改,我可以使该功能成功工作,但是单击单选按钮会使提交按钮图像(.gif)消失...还有单选按钮点击不显示在问题上......真的很奇怪......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2014-10-14
  • 1970-01-01
  • 2014-05-08
相关资源
最近更新 更多