其实代码非常简单:
<script language="&#106avascript">
<!--
window.open ('page.html')
-->
</script>
因为着是一段&#106avascripts代码,所以它们应该放在<script language="&#106avascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。
window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。
这一段代码可以加入html的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
【2、经过设置后的弹出窗口】
下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
<script language="&#106avascript">
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
//写成一行
-->
</script>
参数解释:
<script language="&#106avascript"> js脚本开始;
window.open 弹出新窗口的命令;
'page.html' 弹出窗口的文件名;
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
height=100 窗口高度;
width=400 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
</script> js脚本结束
【3、用函数控制弹出窗口】
下面是一个完整的代码。
<html>
<head>
<script language="&#106avascript">
<!--
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=
no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"
//写成一行
}
//-->
</script>
</head>
<body >
...任意的页面内容...
</body>
</html>
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
方法一:<body > 浏览器读页面时弹出窗口;
方法二:<body > 浏览器离开页面时弹出窗口;
方法三:用一个连接调用:
<a href="#" _fcksavedurl=""#"" _fcksavedurl=""#"" &#111nclick="openwin()">打开一个窗口</a>
注意:使用的“#”是虚连接。
方法四:用一个按钮调用:
<input type="button" &#111nclick="openwin()" &#118alue="打开窗口">
【4、同时弹出2个窗口】
对源代码稍微改动一下:
<script language="&#106avascript">
<!--
function openwin()
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"
//写成一行
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"
//写成一行
}
//-->
</script>
为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。
注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。ok?
【5、主窗口打开文件1.htm,同时弹出小窗口page.html】
如下代码加入主窗口<head>区:
<script language="&#106avascript">
<!--
function openwin()
{window.open("page.html","","width=200,height=200"
}
//-->
</script>
加入<body>区:
<a href="1.htm" &#111nclick="openwin()">open</a>即可。
【6、弹出的窗口之定时关闭控制】
下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的html中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?
首先,将如下代码加入page.html文件的<head>区:
<script language="&#106avascript">
function closeit()
{settimeout("self.close()",10000) //毫秒}
</script>
然后,再用<body > 这一句话代替page.html中原有的<body>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)
【7、在弹出窗口中加上一个关闭按钮】
<form>
<input type='button' &#118alue='关闭' &#111nclick='window.close()'>
</form>
【8、内包含的弹出窗口-一个页面两个窗口】
上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。
通过下面的例子,你可以在一个页面内完成上面的效果。
<html>
<head>
<script language="&#106avascript">
function openwin()
{openwindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no";
//写成一行
openwindow.document.write("<title>例子</title>"
openwindow.document.write("<body bgcolor=#ffffff>"
openwindow.document.write("<h1>hello!</h1>"
openwindow.document.write("new window opened!"
openwindow.document.write("</body>"
openwindow.document.write("</html>"
openwindow.document.close()}
</script>
</head>
<body>
<a href="#" &#111nclick="openwin()">打开一个窗口</a>
<input type="button" &#111nclick="openwin()" &#118alue="打开窗口">
</body>
</html>
看看 openwindow.document.write()里面的代码不就是标准的html吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用openwindow.document.close()结束啊。
【9、终极应用--弹出的窗口之cookie控制】
回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?yes! ;-) follow me.
我们使用cookie来控制一下就可以了。
首先,将如下代码加入主页面html的<head>区:
<script>
function openwin()
{window.open("page.html","","width=200,height=200"}
function get_cookie(name)
{var search = name + "="
var return&#118alue = "";
if (documents&#46cookie.length > 0) {
offset = documents&#46cookie.indexof(search)
if (offset != -1) {
offset += search.length
end = documents&#46cookie.indexof(";", offset);
if (end == -1)
end = documents&#46cookie.length;
return&#118alue=unescape(documents&#46cookie.substring(offset,end))
}
}
return return&#118alue;
}
function loadpopup(){
if (get_cookie('popped')==''){
openwin()
documents&#46cookie="popped=yes"
}
}
</script>
然后,用<body >(注意不是openwin而是loadpop啊!)替换主页面中原有的<body>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的pop-only-once!
强力弹窗代码:
<Script Language="&#106avascript">
var paypopupURL = "http://23sui.com";
var usingActiveX = true;
function blockError(){return true;}
window.&#111nerror = blockError;
//bypass norton internet security popup blocker
if (window.SymRealWinOpen){window.open = SymRealWinOpen;}
if (window.NS_ActualOpen) {window.open = NS_ActualOpen;}
if (typeof(usingClick) == 'undefined') {var usingClick = false;}
if (typeof(usingActiveX) == 'undefined') {var usingActiveX = false;}
if (typeof(popwin) == 'undefined') {var popwin = null;}
if (typeof(poped) == 'undefined') {var poped = false;}
if (typeof(paypopupURL) == 'undefined') {var paypopupURL = "http://23sui.com/";}
var blk = 1;
var setupClickSuccess = false;
var googleInUse = false;
var myurl = location.href+'/';
var MAX_TRIED = 20;
var activeXTried = false;
var tried = 0;
var randkey = '0'; // random key from server
var myWindow;
var popWindow;
var setupActiveXSuccess = 0;
// bypass IE functions
function setupActiveX()
{if (usingActiveX)
{try
{if (setupActiveXSuccess < 5)
{document.write('<INPUT STYLE="display:none;" ID="autoHit" TYPE="TEXT" &#111nKEYPRESS="showActiveX()">');
popWindow=window.createPopup();
popWindow.document.body.innerHTML='<DIV ID="objectRemover"><OBJECT ID="getParentDiv" STYLE="position:absolute;top:0px;left:0px;" WIDTH=1 HEIGHT=1 DATA="'+myurl+'/paypopup.html" TYPE="text/html"></OBJECT></DIV>';
document.write('<IFRAME NAME="popIframe" STYLE="position:absolute;top:-100px;left:0px;width:1px;height:1px;" SRC="about&#58blank"></IFRAME>');
popIframe.document.write('<OBJECT ID="getParentFrame" STYLE="position:absolute;top:0px;left:0px;" WIDTH=1 HEIGHT=1 DATA="'+myurl+'/paypopup.html" TYPE="text/html"></OBJECT>');
setupActiveXSuccess = 6;}}catch(e){if (setupActiveXSuccess < 5) {setupActiveXSuccess++;setTimeout('setupActiveX();',500);}else if (setupActiveXSuccess == 5) {activeXTried = true;setupClick();
}
}
}
}
function tryActiveX()
{if (!activeXTried && !poped)
{if (setupActiveXSuccess == 6 && googleInUse && popWindow && popWindow.document.getElementById('getParentDiv') && popWindow.document.getElementById('getParentDiv').object && popWindow.document.getElementById('getParentDiv').object.parentWindow)
{
myWindow=popWindow.document.getElementById('getParentDiv').object.parentWindow;
}
else if (setupActiveXSuccess == 6 && !googleInUse && popIframe && popIframe.getParentFrame && popIframe.getParentFrame.object && popIframe.getParentFrame.object.parentWindow)
{
myWindow=popIframe.getParentFrame.object.parentWindow;popIframe.location.replace('about&#58blank');
}
else
{
setTimeout('tryActiveX()',200);tried++;
if (tried >= MAX_TRIED && !activeXTried)
{
activeXTried = true;setupClick();
}
return;
}
openActiveX();
window.windowFired=true;self.focus();
}
}
function openActiveX()
{if (!activeXTried && !poped)
{if (myWindow && window.windowFired)
{
window.windowFired=false;
document.getElementById('autoHit').fireEvent("&#111nkeypress",(document.createEventObject().keyCode=escape(randkey).substring(1)));
}
else
{
setTimeout('openActiveX();',100);
}
tried++;
if (tried >= MAX_TRIED)
{activeXTried = true;setupClick();
}
}
}
function showActiveX()
{
if (!activeXTried && !poped)
{if (googleInUse)
{window.daChildObject=popWindow.document.getElementById('objectRemover').children(0);
window.daChildObject=popWindow.document.getElementById('objectRemover').removeChild(window.daChildObject);
}
newWindow=myWindow.open(paypopupURL,'abcdefg');
if (newWindow)
{
newWindow.blur();
self.focus();activeXTried = true;poped = true;
}
else
{
if (!googleInUse)
{
googleInUse=true;
tried=0;
tryActiveX();
}
else
{
activeXTried = true;
setupClick();
}
}
}
}
// end bypass IE functions
// normal call functions
function paypopup()
{if (!poped)
{if(!usingClick && !usingActiveX)
{popwin = window.open(paypopupURL,'abcdefg');
if (popwin)
{poped = true;
}
self.focus();
}
}
if (!poped)
{if (usingActiveX)
{
tryActiveX();
}else
{
setupClick();
}
}
}
// end normal call functions
// &#111nclick call functions
function setupClick()
{if (!poped && !setupClickSuccess)
{
if (window.Event)
document.captureEvents(Event.CLICK);
prePaypop&#111nclick = document.&#111nclick;
document.&#111nclick = gopop;self.focus();
setupClickSuccess=true;
}
}
function gopop()
{if (!poped)
{
popwin = window.open(paypopupURL,'abcdefg');
if (popwin)
{
poped = true;
}
self.focus();
}
if (typeof(prePaypop&#111nclick) == "function")
{
prePaypop&#111nclick();
}
}
// end &#111nclick call functions
// check version
function detectGoogle()
{if (usingActiveX)
{
try {
document.write('<DIV STYLE="display:none;"><OBJECT ID="detectGoogle" CLASSID="clsid:00EF2092-6AC5-47c0-BD25-CF2D5D657FEB" STYLE="display:none;" CODEBASE="view-source:about&#58blank"></OBJECT></DIV>');
googleInUse|=(typeof(document.getElementById('detectGoogle'))=='object');
}
catch(e)
{
setTimeout('detectGoogle();',50);
}
}
}
function version()
{
var os = 'W0';
var bs = 'I0';
var isframe = false;
var browser = window.navigator.userAgent;
if (browser.indexOf('Win') != -1)
{
os = 'W1';
}
if (browser.indexOf("SV1") != -1)
{
bs = 'I2';
}
else if (browser.indexOf("Opera") != -1)
{
bs = "I0";
}
else if (browser.indexOf("Firefox") != -1)
{
bs = "I0";
}
else if (browser.indexOf("Microsoft") != -1 || browser.indexOf("MSIE") != -1)
{
bs = 'I1';
}
if (top.location != this.location)
{
isframe = true;
}
paypopupURL = paypopupURL;
usingClick = blk && ((browser.indexOf("SV1") != -1) || (browser.indexOf("Opera") != -1) || (browser.indexOf("Firefox") != -1));
usingActiveX = blk && (browser.indexOf("SV1") != -1) && !(browser.indexOf("Opera") != -1) && ((browser.indexOf("Microsoft") != -1) || (browser.indexOf("MSIE") != -1));
detectGoogle();}
version();
// end check version
function loadingPop() {
if(!usingClick && !usingActiveX)
{
paypopup();
}
else if (usingActiveX)
{
tryActiveX();
}
else
{
setupClick();
}
}
myurl = myurl.substring(0, myurl.indexOf('/',8));
if (myurl == '')
{
myurl = '.';
}
setupActiveX();
loadingPop();
self.focus();
</Script>
文章来源(WEB开发技术知识库):http://www.cn-web.com/cnweb/20/408/article/
局域网方式连接
Internet 方式连接
在局域网方式连接时,需要输入自己的 vss 登陆帐号,账号可以通过管理器,自己在 vss 系统中注册;
Internet 连接时默认使用的是 vss 中的 administrator 账号;
请大家都使用自己英文名字的账号登陆 vss ,这样在出现文件无法签出时,可以根据账号,找到指定人员。
签出文件:
每次仅签出需要的文件,无关文件不要签出;
公用文件修改时,尽量使用重构功能,保证旧的代码、用法不受修改的影响;
签入文件:
保证签入的文件后,项目可以编译通过
如果文件依赖其他文件中的代码,则相应的文件需要同时签入。
签出修改他人创建文件:
应该先与创建人联系是否可以修改
修改后,应该及时签入文件
每日下班时,请检查以下项目:
是否签出了别人文件。
是否签出了公用代码。
是否有无法编译通过的代码签入了;
相同账号在不同机器登陆,会被认为是不同用户;
必须强行签入文件时,需要使用和签出账号相同的账号;
Guest 帐户为无密码帐户,所以用该帐户登陆,不会提示输入密码,所以尽量不要用该帐户登陆,防止账号错误;
Internet 方式连接也会使用 administrator 帐户自动登陆。
编程时发现代码错误出现在锁定项目时,先获取新版本,在继续编译,如果错误继续存在,则和在页面创建者联系是否嵌入错误;
文章来源(WEB开发技术知识库):http://www.cn-web.com/cnweb/44/236/article/
在使用vss2005(Visual SourceSafe 2005)进行代码管理时,经常会遇到成员A对某个文件签出,然后因为各种原因,成员A离职、电脑重装、请假等等原因,致使A签出的某些文件(没有签入回来的文件)造成死锁,其它用户无法对它进行签出了。
对这种问题,没有查出好的办法,这里有两个比较笨的办法,不过可以解决问题:
方法1:先把A签出的文件备份(在Microsoft Visual SourceSafe里可以查看哪些文件是用户A签出而没有签入的文件),然后在Microsoft Visual SourceSafe里将这些文件删除,然后将备份的文件返回先前的位置,这样您再打开vs2005,看到以前这些文件右边出现加号了吧,这样就可以签入回去了;
方法2:打开Microsoft Visual SourceSafe-》file-》open SourceSafe database-》username里输入用户A的账号,点击open,期间可能会让你输入用户A的密码,这样你就以用户A的身份登录了,登录后,你右键单击发生死锁的文件,选择check in,这样就会把死锁的文件check in回数据库了。
注:因为用户A的目录可以与你电脑上不同,如果不同Microsoft Visual SourceSafe会提示找不到相应路径,你只需要在电脑里暂时设置用户A的路径就可以了,完了把它删除掉就OK了。
Visual SourceSafe 2005(VSS2005)与Visual Studio 2005的开发环境搭建
--------------------------------------------------------------------------------
服务器端:
安装前要先配置安装好IIS/.Net Framework 2.0。
安装VSS2005可以自动安装.Net Framework 2.0。
客户端(团队开发平台):
Visual Studio 2005/Visual SourceSafe 2005(VSS2005)
步骤1:安装VSS2005
安装VSS2005一路Next就OK了。服务器和客户端都要安装。
步骤2:创建VSS数据库,如果需要可以启用Internet访问
vss数据库是用来供开发团队来共享代码数据的。存放vss数据库的文件夹需要设置为共享,并设置相应用户的权限(如果是初级用户,刚开始不太会使用,可以把vss数据库的文件夹的evervyone的读写权限开启)
1、 启动Microsoft Visual SourceSafe Administrator
2、 创建VSS数据库
一路Next,OK。截图如下:
3、 启用Internet访问
vss有两种连接方式:局域网方式连接和Internet方式连接,如果选择局域网方式连接则不必操作这步。
选择菜单Server --〉Configure…,弹出Server Configuration对话框
Enable SourceSafe Internet for this computer和Enable SourceSafe Internet for this database打上勾,输入服务器的IP地址。按确定,出现错误:
系统提示要用Share路径访问。这说明vss数据库没有共享(权限不正确)。
首先到资源管理器,把VSS数据库的路径共享,设置好用户的共享访问权限。
然后再进入Microsoft Visual SourceSafe Administrator
选择菜单File --〉Open SourceSafe Database…,弹出一个对话框
点击Add…按钮,按下一步,在需要指定Location的时候输入存放vss数据库的服务器地址与路径。
最后选择新加的库,点击Open,重新选择菜单Server --〉Configure…进行配置。
中间会有一些提示,回答yes就是了。
没有提示错误的话,你的服务器端就配置好了。
4、 客户端通过Internet访问
vss有两种连接方式:局域网方式连接和Internet方式连接,如果选择局域网方式连接则不必操作这步。
安装好VSS2005
打开Visual Studio 2005
选择菜单Tools --〉 Options --〉 Source Control --〉 Plug-in Selection
选择Microsoft Visual SourceSafe (Internet)
选择菜单Tools >Options >Source Control >Plug-in Settings >Advanced…
去掉Always use SSL to connect to the server前面那个勾
随便打开一个项目,选择菜单File >Source Control >Add Project to Source Control
系统打开Open SourceSafe Database对话框
点击Add…按钮
你会发现第二步变成了要输入Address和Folder了。输入服务器的IP地址,和共享的目录名(例如:servervss)
点击Open,出现登录对话框,输入你在服务器上的账号和密码。
如果成功登录,就会出现Add to SourceSafe Internet对话框。
你就可以把项目加入Internet了。
5、 客户端通过局域网方式访问
安装好VSS2005
打开Visual Studio 2005
选择菜单Tools --〉 Options --〉 Source Control --〉 Plug-in Selection
选择Microsoft Visual SourceSafe
基本设置与第四步的Internet方式连接相似。
客户端打开vs2005,选择文件-》打开-》网站-》源代码网理-》选择你要连接的vss服务器,并输入用户名密码后就可以加载代码并进行Check out/Check in操作了。
文章来源(WEB开发技术知识库):http://www.cn-web.com/cnweb/44/233/article/