0

当我使用 JavaScript 单击较小的图像 (SmallImage.gif) 时,我正在尝试打开较大的图像 (BigImage.png)。这是代码:

HTML

<td align="center"><a href="BigImage.png" onclick="OpenImage(this,event);" target="_blank"><img src="SmallImage.gif" width="196" height="131" border="0"></a></td>

Java脚本

    function OpenImage(element,e)
    {


      e.preventDefault();

      var img =  new Image();
      img.src = element.getAttribute("href");

      img.onload = function(){

      var left = (screen.width/2)-(img.width/2);
      var top = (screen.height/2)-(img.height/2)-25;

      var winWidth = img.width;
      var winHeight = img.height;

      var myWindow = window.open(img.src, "win1", 'height=' + winHeight + ', width=' + winWidth + ',left=' + left + ',top=' + top + ', location=0, toolbar=0, menubar=0, location=0, status=0, scrollbars=0, resizable=0'); 

      if(!myWindow )
       {
        alert("Please allow Popup Blocker to open window and click the image again.");
       }

    };
}

运行这段代码时,Google Chrome 和 Internet Explorer 会调用弹出窗口阻止程序。我正在调用 JS 代码作为直接单击的结果,它不应该调用弹出窗口阻止程序。为什么会发生这种情况,我该如何解决这个问题?

问候。

4

1 回答 1

3

即使您为响应用户点击而打开它,它也会触发弹出窗口阻止程序的原因是您从 img.onload 中调用它,这是异步的,并且会导致弹出窗口阻止程序显示。尝试从 onload 函数外部调用 window.open ,应该可以。

于 2015-02-27T02:06:03.737 回答