最近遇到了一个很棘手的问题就是,在.net平台下用到了js并要求点击一个按钮后弹出一个不带地址栏的窗口。我用到了window.open()函数,我的程序是这样写的:
StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("window.open('");
sBuilder.Append(_pathBuilder);
sBuilder.Append("','' , '");
sBuilder.Append("height=");
sBuilder.Append(_webPageHeight);
sBuilder.Append(",width=");
sBuilder.Append(_webPageWidth);
sBuilder.Append(",top='+(window.screen.availHeight-200)/2 +'");
sBuilder.Append(",left='+(window.screen.availWidth- 300)/2+',scrollbars=yes,toolbar=no,resizable=yes,directories=no,location=no");
sBuilder.Append("')");
ExecuteJs(sBuilder.ToString());//这是一个自定义的函数,调试过了没有问题,问题就在于我给location付了no还是不起作用。
StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("window.open('");
sBuilder.Append(_pathBuilder);
sBuilder.Append("','' , '");
sBuilder.Append("height=");
sBuilder.Append(_webPageHeight);
sBuilder.Append(",width=");
sBuilder.Append(_webPageWidth);
sBuilder.Append(",top='+(window.screen.availHeight-200)/2 +'");
sBuilder.Append(",left='+(window.screen.availWidth- 300)/2+',scrollbars=yes,toolbar=no,resizable=yes,directories=no,location=no");
sBuilder.Append("')");
ExecuteJs(sBuilder.ToString());//这是一个自定义的函数,调试过了没有问题,问题就在于我给location付了no还是不起作用。
参数 衩始值 说明
alwaysLowered yes/no 指定窗口隐藏在所有窗口之下。
alwaysRaised yes/no 指定窗口浮在所有窗口之上。
dependent yes/no 指定打开的窗口为父窗口的一个了窗口。并随父窗口的关闭而关闭。
directions yes/no 指定Navigator 2和3的目录栏是否在新窗口中可见。
height pixel value 设定新窗口的像素高度。
hotkeys yes/no 在没有菜单栏的新窗口设置安全退出热键。
innerHeight pixel value 设置新窗口中文档的像素高度。
innerWidth pixel value 设置新窗口中文档的像素宽度。
location yes/ no 指明位置栏在新窗口中是否可见。
menubar yes /no 指明菜单栏在新窗口中是否可见。
outerHeight pixel value 设定窗口(包括装饰边框)的像素高度。
outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度。
resizable yes /no 指明新窗口是否可以调整。
screenX pixel value 设定新窗口离屏幕边界的像素长度。
screenY pixel value 设定新窗口离屏幕上边界的像素长度。
scrollbars yes /no 指明滚动栏在新窗口中是否可见。
titlebar yes /no 指明菜单题目栏在新窗口是否可见。
toolbar yes /no 指明工具栏在新窗口中是否可见。
Width pixel value 设定窗口的像素宽度。
z-look yes /no 在文档中包含各个 <pplet>标签的数组。
fullscreen yes / no 打开的窗体是否进行全屏显示
left pixel value 设定新窗口距屏幕左方的距离
top pixel value 设定新窗口距屏幕上方的距离
也许是你拼的有问题,把你的 sBuilder 的toString()在后台打印下,复制到window.open("")里面在前台试试就知道是否是你拼的 错误了
<HEAD>
<TITLE>B</TITLE>
<base target="_self" />
</HEAD><SCRIPT>
function OPenE() {
window.open('E.html', 'newwindow', 'height=420,width=800,top=' + (screen.AvailHeight - 300) / 2 + ',left=' + (screen.AvailWidth - 300) / 2 + ',toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
}
</SCRIPT></HEAD> <BODY>
<input type='button' onclick='OPenE()' value='open D.html' /><table id="table1" border=1>
<tbody id="tbody1">
</table>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>B</TITLE>
</HEAD> <BODY>
<input type='button' onclick='Add()' value='Test' />
</BODY>
</HTML>
你代码是对的,其核心部分和我的一样!我试过了,单独列出来是可以隐藏,但是放在ASP.NET里用scriptmanager类里面的RegisterStartupScript(page.GetType(),screptkey,js)方法时location就失效了!我想这肯定是ASP.NET 里哪个地方的配置文件要修改的问题,但我又找不着这个文件!请教!
sBuilder.Append("window.open('");
sBuilder.Append(_pathBuilder);
sBuilder.Append("','' , '");
sBuilder.Append("height=");
sBuilder.Append(_webPageHeight);
sBuilder.Append(",width=");
sBuilder.Append(_webPageWidth);
sBuilder.Append(",top=50");
sBuilder.Append(",left=50,scrollbars=yes,toolbar=no,resizable=yes,directories=no,location=no");
sBuilder.Append("')");
ExecuteJs(sBuilder.ToString());你先试试这样