画像を含むポップアップウィンドウを作成しようとしていますが、ポップアップを画像と同じアスペクト比にします。しかし、私はimage.onloadの画像の寸法しか知りません。したがって、必要なのは、image.onloadの後に表示されるポップアップです。しかし、ブラウザはそれを不要なポップアップと見なし、ブロックします。ユーザーがクリックした後の唯一のポップアップであっても。
最初にポップアップを作成し、後でコンテンツとサイズを変更しようとしましたが、それが機能した場合でも、ポップアップウィンドウが背景に隠れて、再び前面に戻す方法がない場合があります(ウィンドウのクロム)
遅延したポップアップがまだhooked
ユーザーのクリックに合っていることを確認する方法はありますか?または他のいくつかの提案。
動作させたいコード:
selectURL: function(url) {
// Check for images, otherwise just simply open the file by the browser.
if(url.match(/(jpe?g|png|gif|bmp)$/gim)) {
// Check if colorbox exists and use if so.
if($.colorbox) {
$.colorbox({
maxWidth:'80%',
maxHeight:'80%',
fixed: true,
scrolling: false,
href: url,
open: true,
photo: true
});
} else {
// New image object so we can calculate the required popup size on load
var myImage = new Image();
myImage.src = url;
// Close current window to make sure focus works
if(typeof(popupWindow) !== 'undefined') {
popupWindow.close();
}
// Temporary loading image
popupWindow = window.open('/images/loading.gif','popupWindow','height=400,width=600,resizable=no,scrollbars=no,top=200,left=200');
if (window.focus) {
popupWindow.focus();
}
// Calculator and actual image opener :)
myImage.onload = function() {
var maxWidth = 600,
maxHeight = 600;
// Close existing popup
if(typeof(popupWindow) !== 'undefined') {
popupWindow.close();
}
if(this.width < maxWidth && this.height < maxHeight) {
popupWindow = window.open(this.src,'popupWindow','height='+this.height+',width='+this.width+',resizable=no,scrollbars=no,top=200,left=200');
} else if(this.width === this.height) {
popupWindow = window.open(this.src,'popupWindow','height='+maxHeight+',width='+maxWidth+',resizable=yes,scrollbars=yes,top=200,left=200');
} else if(this.width < this.height) {
popupWindow = window.open(this.src,'popupWindow','height='+maxHeight+',width='+(maxHeight / this.height * this.width)+',resizable=yes,scrollbars=yes,top=200,left=200');
} else {
popupWindow = window.open(this.src,'popupWindow','height='+(maxWidth / this.width * this.height)+',width='+maxWidth+',resizable=yes,scrollbars=yes,top=200,left=200');
}
if (window.focus) {
popupWindow.focus();
}
}
}
} else {
window.open(url);
}
}