当我使用JavaScript单击较小的图像(SmallImage.gif)时,我正在尝试打开一个更大的图像(BigImage.png)。这是代码:
<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>
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代码作为直接点击的结果,不应该调用弹出窗口阻止程序。为什么会这样?我该如何纠正这个问题呢?
问候。
答案 0 :(得分:3)
即使你是为了响应用户点击而打开弹出窗口阻止程序的原因是你在img.onload中调用它,这是异步的,并且会导致弹出窗口阻止程序显示。尝试从onload函数外部调用window.open,应该可以工作。