onClick在IE 11中无法单击

时间:2014-07-07 19:07:15

标签: jquery html object

当用户点击视频的任意位置时,我正在尝试播放/暂停视频。问题是它正在IE 11中进行双击,对于所有其他浏览器,它只需单击左键即可完美运行。以下是我的代码。

var obj = "<object id=\"video\" onClick=\"clicked('video')\" data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"" + width1 + "%\" height=\"" + height1 + "%\">" +
                "<param name=\"onLoad\" value=\"pluginLoad\" />" +
                "<param name=\"source\" value=\"player.xap\"/>" +
                "<param name=\"initParams\" value=\"sourceurl=" + url + "\" />" +
                "</object>";

videoClicked方法如下&#34;

function clicked(ID) {
    $("video").css("cursor", "pointer");
    var mediaElementName = "mediaPlayer";
    var host = document.getElementById(ID);
    var s = host.content.findName(mediaElementName).CurrentState;
    if (s == "Paused")
        host.content.findName(mediaElementName).Play();
    else
        host.content.findName(mediaElementName).Pause();
}

我想让它只需单击一下即可。当我使用onmousedown时,它也在IE 11上完美运行。谁能告诉我我的代码有什么问题?

感谢。

2 个答案:

答案 0 :(得分:1)

您不应该以html或自己的方式附加处理程序。您将深入了解这些跨浏览器问题。

试试这个:

$("#video").mouseup(function(e) {
    if (e.which != 1) return false;    // Stops all non-left-clicks
    alert("clicked");
});

答案 1 :(得分:0)

它无法正常工作的原因是因为你没有将函数传递给onClick,而是调用了一个函数。要解决此问题,请从clicked返回一个函数,该函数将在id "video"

周围关闭
function clicked(ID) {
    return function() {
      $("video").css("cursor", "pointer");
      var mediaElementName = "mediaPlayer";
      var host = document.getElementById(ID);
      var s = host.content.findName(mediaElementName).CurrentState;
      if (s == "Paused")
          host.content.findName(mediaElementName).Play();
      else
          host.content.findName(mediaElementName).Pause();
    }
}

这假设在其他情况下会有除视频之外的ID,否则您只需硬编码该值而不返回函数。

或者如果这看起来很复杂,只需通过从事件对象中读取元素来获取元素的ID:

function clicked(e) {
    var host = e.target;
    var ID = host.id;
    $("video").css("cursor", "pointer");
    var mediaElementName = "mediaPlayer";
    var s = host.content.findName(mediaElementName).CurrentState;
    if (s == "Paused")
        host.content.findName(mediaElementName).Play();
    else
        host.content.findName(mediaElementName).Pause();
}

但是你应该像这样调整你的HTML,将引用传递给点击的函数

var obj = "<object id=\"video\" onClick=\"clicked\" data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"" + width1 + "%\" height=\"" + height1 + "%\">" +
                "<param name=\"onLoad\" value=\"pluginLoad\" />" +
                "<param name=\"source\" value=\"player.xap\"/>" +
                "<param name=\"initParams\" value=\"sourceurl=" + url + "\" />" +
                "</object>";