我正在将大量HTML内容迁移到新平台。源文件包含标记中的宽度和高度信息,但这些维度是错误的。
我想在弹出窗口中打开图像,但是使用源文件的正确尺寸。我已经使用链接到弹出脚本的锚替换了所有原始标记。
我遇到的问题是,如果我使用HTML文档中提供的宽度和高度,弹出窗口太小;但是只要我在打开弹出窗口之前添加javascript来读取实际尺寸(使用naturalHeight和naturalWidth属性),图像就会在新选项卡中打开,弹出窗口不再启动。
这是弹出代码:
<script type="text/javascript">
function wopen(url, name, w, h) { //w and h are incorrect but available in the HTML
w += 32; //padding for scrollbars and borders
h += 96;
var win = window.open(url,
name,
'width=' + w + ', height=' + h + ', ' +
'location=no, menubar=no, ' +
'status=no, toolbar=no, scrollbars=no, resizable=yes');
win.resizeTo(w, h);
win.focus();
}
</script>
我尝试使用简单的函数来获得真实的尺寸。例如,如果我在弹出脚本中调用下面的函数getimagewidth,则会在新选项卡中加载图像,而window.open方法不会创建弹出窗口。
function getimagewidth(i)
{
var x=new Image;
x.src=i;
return x.naturalWidth;
}
我还尝试修改弹出脚本以读取属性naturalWidth和naturalHeight,然后将这些属性传递给window.open或window.resizeTo。同样的事情发生了,因为引用该图像的任何代码行也会在新选项卡中打开它,并且弹出窗口不会启动。例如,我尝试添加这些行:
var x=document.getElementByID(url);
rw=x.naturalWidth;
rh=x.naturalHeight;
其次是
var win = window.open( same parameters as above, replacing w and h with rw and rh )
或
win.resizeTo(rw, rh);
只是为了添加锦上添花,页面必须在基于铬的专有浏览器中正常工作;这意味着win.resizeTo不一定有用。
我真的不知道这有什么问题,但我希望我已经清楚地解释了我想要完成的事情。有没有办法让我的wopen函数最初以正确的大小打开,事先不知道大小?