(难)confirm和alert消息框 使用模态窗口,vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FF是不支持showModalDialog的楼主想如何阻塞?可否贴个样例? 我的阻塞是譬如我写alert("1");alert("2");alert("3");那么将会在弹出1,之后要求我点确认,然后再运行到2,然后确认,再弹出3,而不带阻塞的会显示3,2,1 一起显示出来,就是执行完alert("1");后没确定前也会继续执行 好象是不能阻塞的,刚看了个帖子,有方便回调的方法,还不错http://bbs.51js.com/redirect.php?tid=72325&goto=lastpost 我们公司现在用的就是ext的,然后在里面写回调,但是我们公司有100多个模块,页面更是不计其数,接下来一个多月就是我们的工作重点。郁闷!如果可以带阻塞,那么就不用改写什么代码,直接重写alert就好,研究了下,我也分享下我的东西 dailog.htm<html> <head> <script> var param = window.dialogArguments; //传过来的模式对话框窗口参数 document.title = param.title; //窗口标题,必须在窗口创建前实现s /********将父窗口的js加载进来********/ var scripts = param.parent.document.scripts; var _head = document.getElementsByTagName("head")[0]; for(var n = 0; n < scripts.length; n++) { if(scripts[n].src) { var _script = newEl("script"); _script.src = scripts[n].src; bind(_head, _script); }else{//加载直接在html文档中写的script var _script = newEl("script"); _script.text = scripts[n].text; bind(_head, _script); } } /*******根据ID获得父窗口的元素*********/ function $f(el) { return param.parent.document.getElementById(el); } /***********创建一个HTML元素*******/ function newEl(tagName) { return document.createElement(tagName); } /***********追加元素***************/ function bind(ower, child) { ower.appendChild(child); } /*******在浏览器完成对象的装载后立即触发*********/ window.onload = function() { var winDiv; if(typeof(param._div) == "string") { winDiv = param.parent.document.getElementById(param._div); //父窗口window对象,因为param._div对象在父窗口 }else{//直接传对象过来 winDiv = param._div; } $("mainDiv").innerHTML = winDiv.innerHTML; //将DIV内容在弹出窗口中渲染 } </script> </head> <body> <center> <div id="mainDiv" style="margin-top:20px;width:90%"></div> </center> </body></html>test.html<html> <head> <title>测试页面</title> <style> .list { border-top:1 solid #8A2BE2; border-left:1 solid #8A2BE2; border-right:1 solid #8A2BE2; } .list td { border-bottom: 1 solid #8A2BE2; } </style> <script> function $(el) { return document.getElementById(el); } function showWin(param) { alert("test 前"); window.showModalDialog("dailog.htm", param, "dialogWidth:" +param.width +"px;dialogHeight:"+param.height+"px;center:yes;help:no;scroll:no;status:no;resizable:no"); alert("test 后"); } function TB(tbid) { this.tb = typeof(tbid) == "string"? $(tbid): tbid; this.getValue = function(rowIndex, cellIndex){ var trs = this.tb.rows[rowIndex]; var _td = trs.cells[cellIndex]; return _td.innerText; } this.setValue = function(rowIndex, cellIndex, value) { var _tr = this.tb.rows[rowIndex]; var _td = _tr.cells[cellIndex]; _td.innerText = value; } /********获取行索引********/ this.findRowIndex = function(eventSrc) { var _tr = eventSrc; //eventSrc事件源,必须在TD里获事件源是TD或TR本身 while(_tr.tagName != "TR") { _tr = _tr.parentNode; } var trs = this.tb.rows; for(var i = 0; i < trs.length; i++){ if(_tr == trs[i]) return i; } } } function edit() { var tb = new TB("data"); rIndex = tb.findRowIndex(event.srcElement); $("updateRowIndex").value = rIndex; $("userName").value = tb.getValue(rIndex, 1); //获得姓名 $("sex").value = tb.getValue(rIndex, 2); //获得性别 $("age").value = tb.getValue(rIndex, 3); //获得年龄 showWin({title:"修改用户信息", width:390, height:230, _div:"openWin",parent:window}); } function saveAndUpdateView(){ var updateRowIndex = $("updateRowIndex").value; var tb = new TB($f("data")); //$f()在dailog.html定义,获到的table是父窗口中的table tb.setValue(updateRowIndex, 1, $("userName").value); tb.setValue(updateRowIndex, 2, $("sex").value); tb.setValue(updateRowIndex, 3, $("age").value); close(); } </script> </head> <body> <p style="margin-top:60px"> <center> <table id="data" class="list" width="460px"> <tr> <td>编号</td> <td>用户名</td> <td>性别</td> <td>年龄</td> <td>操作</td> </tr> <tr> <td>1</td> <td>李永胜</td> <td>男</td> <td>27</td> <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td> </tr> <tr> <td>2</td> <td>林兄</td> <td>男</td> <td>27</td> <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td> </tr> <tr> <td>3</td> <td>叶兄</td> <td>男</td> <td>23</td> <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td> </tr> </table> </center> </p> <!---弹出窗口显示的内容----> <div id="openWin" style="display:none;"> <form> <fieldSet> <legend>修改用户</legend> <table> <tr> <td>用户名</td><td><input type="text" id="userName"/></td> </tr> <tr> <td>性别</td><td><input type="text" id="sex"/></td> </tr> <tr> <td>年龄</td><td><input type="text" id="age"/></td> </tr> </table> </fieldSet> <input type="hidden" id="updateRowIndex"/> </form> <span style="background:#FAEBD7;cursor:hand" onclick="saveAndUpdateView();"> 修改 </span> </div> </body></html> 楼主用在项目中用ext,我对这东西刚接触,也想把它用在有商业目的的项目中。收费吗?好像是不是还要获得什么授权。 然后现在是可以阻塞了,但是弹出的网页还是有标题栏,那颜色样式等于没改然后又找到了一个解决方案,这个窗口是可以自定义的<HTML><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>Chromeless Window</title><SCRIPT LANGUAGE="JScript">/*This following code are designed and writen by Windy_sk <[email protected]>You can use it freely, but u must held all the copyright items!2003-12-23 modifiedSpecial Thanks For andot*/var CW_width = 400;var CW_height = 300;var CW_top = 100;var CW_left = 100;var CW_url = "/";var New_CW = window.createPopup();var CW_Body = New_CW.document.body;var content = "";var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";function insert_content(){var temp = "";CW_Body.style.overflow = "hidden";CW_Body.style.backgroundColor = "white";CW_Body.style.border = "solid black 1px";temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>";temp += "<tr style=';font-size:12px;background:#0099CC;height:20;cursor:default' ondblclick=\"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>";temp += "<td style='color:#ffffff;padding-left:5px'>Chromeless Window For IE6 SP1</td>";temp += "<td style='color:#ffffff;padding-right:5px;' align=right>";temp += "<span id=Help onclick=\"alert('Chromeless Window For IE6 SP1 - Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks For andot')\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>";temp += "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style=\""+CSStext+"font-family:Webdings;\" title='Minimum'>0</span>";temp += "<span id=Max onclick=\"this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title='Maximum'>1</span>";temp += "<span id=Close onclick='parent.opener=null;parent.close()' style=\""+CSStext+"font-family:System;padding-right:2px;\" title='Close'>x</span>";temp += "</td></tr><tr><td colspan=2>";temp += "<div>";temp += "这里是网页内容<br>这里是网页内容<br>...";temp += "</div>";temp += "</td></tr></table>";CW_Body.innerHTML = temp;}insert_content();var if_max = true;function show_CW(){window.moveTo(10000, 10000);if(if_max){ New_CW.show(CW_top, CW_left, CW_width, CW_height); if(typeof(New_CW.document.all.include)!="undefined"){ New_CW.document.all.include.style.width = CW_width; New_CW.document.all.Max.innerText = "1"; } }else{ New_CW.show(0, 0, screen.width, screen.height); New_CW.document.all.include.style.width = screen.width;}}window.onfocus = show_CW;window.onresize = show_CW;// Move Windowvar drag_x,drag_y,draging=falsefunction drag_move(e){if (draging){ New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height); return false;}}function drag_down(e){if(e.button==2)return;if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;drag_x=e.clientX;drag_y=e.clientY;draging=true;e.srcElement.setCapture();}function drag_up(e){draging=false;e.srcElement.releaseCapture();if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;CW_top = e.screenX-drag_x;CW_left = e.screenY-drag_y;}</SCRIPT></HTML> 恩 alert prompt confirm都是进程同步的模拟进程同步 应该很难。。 大家还是别说兼容,就IE下能实现就不错了,要像alert那样的窗体功能,编个ActiveX的个性化窗体可能可以。 关于Selection对象的奇怪现象 问两行JS代码的意思 extjs2 上传附件问题 高手进哈 求一个控件 像这样的横向菜单怎么写出来? onsubmit事件谁知道 $在javascript里面的应用 如果页面上有几千几万个INPUT文本框,要依次取得文本框的值,会很慢很慢,如何来优化 函数调用 急急急,在线等query获取当前时间 我想建立一个选择搜索。高人看看该怎么写 菜鸟想建2个HTML页,在页面1上输入奥运会3个字,点按钮,就会打开第2个页面,这时这个页面上所有关于奥运会3个字都变成鲜艳的黄色显示,怎么做呢,高手们??
那么将会在弹出1,之后要求我点确认,然后再运行到2,然后确认,再弹出3,
而不带阻塞的会显示3,2,1 一起显示出来,就是执行完alert("1");后没确定前也会继续执行
http://bbs.51js.com/redirect.php?tid=72325&goto=lastpost
<html>
<head>
<script>
var param = window.dialogArguments; //传过来的模式对话框窗口参数
document.title = param.title; //窗口标题,必须在窗口创建前实现s
/********将父窗口的js加载进来********/
var scripts = param.parent.document.scripts;
var _head = document.getElementsByTagName("head")[0];
for(var n = 0; n < scripts.length; n++) {
if(scripts[n].src) {
var _script = newEl("script");
_script.src = scripts[n].src;
bind(_head, _script);
}else{//加载直接在html文档中写的script
var _script = newEl("script");
_script.text = scripts[n].text;
bind(_head, _script);
}
}
/*******根据ID获得父窗口的元素*********/
function $f(el) {
return param.parent.document.getElementById(el);
}
/***********创建一个HTML元素*******/
function newEl(tagName) {
return document.createElement(tagName);
}
/***********追加元素***************/
function bind(ower, child) {
ower.appendChild(child);
}
/*******在浏览器完成对象的装载后立即触发*********/
window.onload = function() {
var winDiv;
if(typeof(param._div) == "string") {
winDiv = param.parent.document.getElementById(param._div); //父窗口window对象,因为param._div对象在父窗口
}else{//直接传对象过来
winDiv = param._div;
}
$("mainDiv").innerHTML = winDiv.innerHTML; //将DIV内容在弹出窗口中渲染
}
</script>
</head>
<body>
<center>
<div id="mainDiv" style="margin-top:20px;width:90%"></div>
</center>
</body>
</html>
test.html
<html>
<head>
<title>测试页面</title>
<style>
.list {
border-top:1 solid #8A2BE2;
border-left:1 solid #8A2BE2;
border-right:1 solid #8A2BE2;
}
.list td {
border-bottom: 1 solid #8A2BE2;
}
</style>
<script>
function $(el) {
return document.getElementById(el);
}
function showWin(param) {
alert("test 前");
window.showModalDialog("dailog.htm", param, "dialogWidth:" +param.width +"px;dialogHeight:"+param.height+"px;center:yes;help:no;scroll:no;status:no;resizable:no");
alert("test 后");
}
function TB(tbid) {
this.tb = typeof(tbid) == "string"? $(tbid): tbid;
this.getValue = function(rowIndex, cellIndex){
var trs = this.tb.rows[rowIndex];
var _td = trs.cells[cellIndex];
return _td.innerText;
}
this.setValue = function(rowIndex, cellIndex, value) {
var _tr = this.tb.rows[rowIndex];
var _td = _tr.cells[cellIndex];
_td.innerText = value;
}
/********获取行索引********/
this.findRowIndex = function(eventSrc) {
var _tr = eventSrc; //eventSrc事件源,必须在TD里获事件源是TD或TR本身
while(_tr.tagName != "TR") {
_tr = _tr.parentNode;
}
var trs = this.tb.rows;
for(var i = 0; i < trs.length; i++){
if(_tr == trs[i]) return i;
}
}
}
function edit() {
var tb = new TB("data");
rIndex = tb.findRowIndex(event.srcElement);
$("updateRowIndex").value = rIndex;
$("userName").value = tb.getValue(rIndex, 1); //获得姓名
$("sex").value = tb.getValue(rIndex, 2); //获得性别
$("age").value = tb.getValue(rIndex, 3); //获得年龄
showWin({title:"修改用户信息", width:390, height:230, _div:"openWin",parent:window});
}
function saveAndUpdateView(){
var updateRowIndex = $("updateRowIndex").value;
var tb = new TB($f("data")); //$f()在dailog.html定义,获到的table是父窗口中的table
tb.setValue(updateRowIndex, 1, $("userName").value);
tb.setValue(updateRowIndex, 2, $("sex").value);
tb.setValue(updateRowIndex, 3, $("age").value);
close();
}
</script>
</head>
<body>
<p style="margin-top:60px">
<center>
<table id="data" class="list" width="460px">
<tr>
<td>编号</td>
<td>用户名</td>
<td>性别</td>
<td>年龄</td>
<td>操作</td>
</tr>
<tr>
<td>1</td>
<td>李永胜</td>
<td>男</td>
<td>27</td>
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td>
</tr>
<tr>
<td>2</td>
<td>林兄</td>
<td>男</td>
<td>27</td>
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td>
</tr>
<tr>
<td>3</td>
<td>叶兄</td>
<td>男</td>
<td>23</td>
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();"> 修改 </span></td>
</tr>
</table>
</center>
</p>
<!---弹出窗口显示的内容---->
<div id="openWin" style="display:none;">
<form>
<fieldSet>
<legend>修改用户</legend>
<table>
<tr>
<td>用户名</td><td><input type="text" id="userName"/></td>
</tr>
<tr>
<td>性别</td><td><input type="text" id="sex"/></td>
</tr>
<tr>
<td>年龄</td><td><input type="text" id="age"/></td>
</tr>
</table>
</fieldSet>
<input type="hidden" id="updateRowIndex"/>
</form>
<span style="background:#FAEBD7;cursor:hand" onclick="saveAndUpdateView();"> 修改 </span>
</div>
</body>
</html>
然后又找到了一个解决方案,这个窗口是可以自定义的
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Chromeless Window</title>
<SCRIPT LANGUAGE="JScript">
/*
This following code are designed and writen by Windy_sk <[email protected]>
You can use it freely, but u must held all the copyright items!
2003-12-23 modified
Special Thanks For andot
*/var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";function insert_content(){
var temp = "";
CW_Body.style.overflow = "hidden";
CW_Body.style.backgroundColor = "white";
CW_Body.style.border = "solid black 1px";
temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>";
temp += "<tr style=';font-size:12px;background:#0099CC;height:20;cursor:default' ondblclick=\"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>";
temp += "<td style='color:#ffffff;padding-left:5px'>Chromeless Window For IE6 SP1</td>";
temp += "<td style='color:#ffffff;padding-right:5px;' align=right>";
temp += "<span id=Help onclick=\"alert('Chromeless Window For IE6 SP1 - Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks For andot')\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>";
temp += "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style=\""+CSStext+"font-family:Webdings;\" title='Minimum'>0</span>";
temp += "<span id=Max onclick=\"this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title='Maximum'>1</span>";
temp += "<span id=Close onclick='parent.opener=null;parent.close()' style=\""+CSStext+"font-family:System;padding-right:2px;\" title='Close'>x</span>";
temp += "</td></tr><tr><td colspan=2>";
temp += "<div>";
temp += "这里是网页内容<br>这里是网页内容<br>...";
temp += "</div>";
temp += "</td></tr></table>";
CW_Body.innerHTML = temp;
}insert_content();var if_max = true;
function show_CW(){
window.moveTo(10000, 10000);
if(if_max){
New_CW.show(CW_top, CW_left, CW_width, CW_height);
if(typeof(New_CW.document.all.include)!="undefined"){
New_CW.document.all.include.style.width = CW_width;
New_CW.document.all.Max.innerText = "1";
}
}else{
New_CW.show(0, 0, screen.width, screen.height);
New_CW.document.all.include.style.width = screen.width;
}
}window.onfocus = show_CW;
window.onresize = show_CW;// Move Window
var drag_x,drag_y,draging=falsefunction drag_move(e){
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}function drag_down(e){
if(e.button==2)return;
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
drag_x=e.clientX;
drag_y=e.clientY;
draging=true;
e.srcElement.setCapture();
}function drag_up(e){
draging=false;
e.srcElement.releaseCapture();
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
CW_top = e.screenX-drag_x;
CW_left = e.screenY-drag_y;
}
</SCRIPT>
</HTML>