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>

JavaSript

    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 に答える