如何让Js脚本暂停 在弹出层后. return false然后 在层的按钮事件里,继续. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么return false讲清楚点,或给出代码分不够我再加 function getStr(){ var str = window.prompt("请输入", ""); while (str == "" || str == null) { alert("不能为空"); str = window.prompt("请输入", ""); }} 我这个是HTML DIV做的弹出层用途相当prompt,但不是prompt 使用回调的写法。function getContent(callback){ somebutton.onclick=function(){callback(sometext.value);};}...getContent( function(v){alert(v);}); 思路是:采用回调机制,用div模拟的prompt层的确定按钮被点击后执行后继的操作另外:自制的div层要模拟prompt这样的模态窗口时,即层出现时用户只能在该层上操作,而无法再操作页面上其他部分,因此,要考虑使用页面掩码页技术demo代码:a.html------------------------------------------------------------------<html><script language=javascript>function demo(){ showPageMask(); showMyPrompt("callbackFunction");}var g_my_prompt_div = null;function showMyPrompt( callbackfunc ){ g_my_prompt_div = document.createElement("<div style=position:absolute;top:200;left:300;width:100;height:50;background-color:#cccccc></div>"); g_my_prompt_div.innerHTML = "<input id=userinput value=请您输入数据><input type=button value=确定 onclick='myPromptSubmit(\""+callbackfunc+"\")'>"; document.body.appendChild(g_my_prompt_div);}function myPromptSubmit( callbackfunc ){ var result = document.all.userinput.value; document.body.removeChild(g_my_prompt_div); document.body.removeChild(g_page_mask); eval( callbackfunc+"(\""+result+"\")" );}function callbackFunction( result ){ alert("user input: "+result);}var g_page_mask = null;function showPageMask(){ g_page_mask = document.createElement("<div style=\"position:absolute;top:0;left:0;width:"+document.body.clientWidth+";height:"+document.body.clientHeight+"\"></div>"); document.body.appendChild(g_page_mask); g_page_mask.innerHTML = "<iframe style=\"FILTER:Alpha(opacity=20);width:100%;height:100%\" onclick=alert()></iframe>"; }</script><body>hello fuWaer<br><input type=button value="click me" onclick=demo()></body></html>------------------------------------------------------------------ <html><body>hello fuWaer<br></body><script language=javascript>function demo(){ showPageMask(); showMyPrompt("callbackFunction"); alert("!");}var g_my_prompt_div = null;function showMyPrompt( callbackfunc ){ g_my_prompt_div = document.createElement("<div style=position:absolute;top:200;left:300;width:100;height:50;background-color:#cccccc></div>"); g_my_prompt_div.innerHTML = "<input id=userinput value=请您输入数据><input type=button value=确定 onclick='myPromptSubmit(\""+callbackfunc+"\")'>"; document.body.appendChild(g_my_prompt_div);}function myPromptSubmit( callbackfunc ){ var result = document.all.userinput.value; document.body.removeChild(g_my_prompt_div); document.body.removeChild(g_page_mask); eval( callbackfunc+"(\""+result+"\")" );}function callbackFunction( result ){ alert("user input: "+result);}var g_page_mask = null;function showPageMask(){ g_page_mask = document.createElement("<div style=\"position:absolute;top:0;left:0;width:"+document.body.clientWidth+";height:"+document.body.clientHeight+"\"></div>"); document.body.appendChild(g_page_mask); g_page_mask.innerHTML = "<iframe style=\"FILTER:Alpha(opacity=20);width:100%;height:100%\" onclick=alert()></iframe>"; }demo();</script></html>------------------------------------------------------------我要的代码是这样的我需要得到弹出层返回值后再继续执行下面的代码如上面这个我修改过的代码,因为我需要利用到弹出层返回的值,要达到一开始弹出弹出层后需要点击弹出层的确定,然后再执行alert("!"); 通常的Browser 没有类似php或java 的sleep 功能.javascript 实现 sleep 或 wait是很难的. Teabrowser 实现了window.sleep() function,可下载看看.网址:http://groups.google.com/group/teabrowser/web/TeaBrowser.zip 用window.showModalDialog,如retObj=window.showModalDialog("childwin.htm",args,window_style)window.showModalDialog弹出的是一个模式对话窗口,当执行了这句话后,除非关闭了childwin.htm,否则不会执行下面的语句,并且可以通过childwin.htm返回值到调用窗口,如返回retObj,可查看关于showModalDialog的具体用法,没错的,我就经常用到模式窗口 把你的alert("!")移动到callbackFunction里面不就可以了function demo(){showPageMask();showMyPrompt("callbackFunction");//alert("!");}function callbackFunction( result ){alert("user input: "+result);alert("!");} 可以用setTimeout写一个阻断,来模拟sleep(); js实现Sleep功能利用IE特殊的对话框实现来曲径通幽function sleep(timeout) { window.showModalDialog("javascript:document.writeln('<script>window.setTimeout(function () { window.close(); }, " + timeout + ");<\/script>');");}window.alert("before sleep ...");sleep(2000);window.alert("after sleep ...");缺点-只有IE支持(IE7因为安全限制也而不能达到目的)。2-------------------------------------------function sleep(millis) { var notifier = NjsRuntime.createNotifier(); setTimeout(notifier, millis); notifier.wait->();}看到 ->() 这样的语法,就象刚看到Prototype的 $() 函数一样让我惊为天人。不过直接在浏览器中这段脚本是会报告语法错误的。实际上它们需要经过预编译成客户端浏览器认可的JavaScript。 window.showModalDialog的确使我想要的效果但是只有IE支持,而且操作也不方便楼上的方法没听过,不过只有IE支持(IE7因为安全限制也而不能达到目的)的缺点也不行看过http://topic.csdn.net/t/20060303/22/4591744.html的帖子里面的方法都是牺牲CPU来达到效果,只是忙等,无法达到效果FuWaer()的回调函数也想过但是我弹出窗口获得的值是下面所有程序都要用的,都移到回调函数里不但破坏程序结构,而且不太现实 可以用setTimeout写一个阻断,来模拟sleep();----------------不知道怎么实现不过估计也不能达到我sleep的目的我要求sleep是等待用户填写值在此期间Js是不能继续执行下去的 单线程是没有多线程的sleep功能的,只能通过不停的检查实现类似的目的。或者更改你的设计避免此功能,如使用事件机制。var sleep = false;function aa(){ if(!sleep){ 显示提示框 sleep=ture setTimeout(aa,100); }else if(用户还没按确定){ setTimeout(aa,100); }else{ 继续执行的代码; }} 同意还是回避为主不过你的方法还是破坏了程序结构我一个function不得不拆成几份而且所有脚本都必须写成function很麻烦 js 正则表达式 panel的scroll。 <!--...//-->是如何hide from old browsers的?? 我要一段背景是黑色的的天气代码? 点击背景颜色变化,再点击背景还原 晕了。。问个弱弱的问题 怎样实现,点击链接后调用一个ASP文件,但不显示出来,等调用成功后再弹出一个提示框? 一个看上去不是很难,但是困饶了我很久的问题,请各位大虾赐教 数值转换 手机端jsonp的使用 函数的问题 求一个只允许输入年的javascript正则表达式
讲清楚点,或给出代码
分不够我再加
{
var str = window.prompt("请输入", "");
while (str == "" || str == null)
{
alert("不能为空");
str = window.prompt("请输入", "");
}
}
用途相当prompt,但不是prompt
somebutton.onclick=function(){callback(sometext.value);};
}
...
getContent(
function(v){alert(v);}
);
另外:自制的div层要模拟prompt这样的模态窗口时,即层出现时用户只能在该层上操作,而无法再操作页面上其他部分,因此,要考虑使用页面掩码页技术
demo代码:
a.html
------------------------------------------------------------------
<html>
<script language=javascript>
function demo()
{
showPageMask();
showMyPrompt("callbackFunction");
}
var g_my_prompt_div = null;
function showMyPrompt( callbackfunc )
{
g_my_prompt_div = document.createElement("<div style=position:absolute;top:200;left:300;width:100;height:50;background-color:#cccccc></div>");
g_my_prompt_div.innerHTML = "<input id=userinput value=请您输入数据><input type=button value=确定 onclick='myPromptSubmit(\""+callbackfunc+"\")'>";
document.body.appendChild(g_my_prompt_div);
}
function myPromptSubmit( callbackfunc )
{
var result = document.all.userinput.value;
document.body.removeChild(g_my_prompt_div);
document.body.removeChild(g_page_mask);
eval( callbackfunc+"(\""+result+"\")" );
}
function callbackFunction( result )
{
alert("user input: "+result);
}
var g_page_mask = null;
function showPageMask()
{
g_page_mask = document.createElement("<div style=\"position:absolute;top:0;left:0;width:"+document.body.clientWidth+";height:"+document.body.clientHeight+"\"></div>");
document.body.appendChild(g_page_mask);
g_page_mask.innerHTML = "<iframe style=\"FILTER:Alpha(opacity=20);width:100%;height:100%\" onclick=alert()></iframe>";
}
</script>
<body>
hello fuWaer<br>
<input type=button value="click me" onclick=demo()>
</body>
</html>
------------------------------------------------------------------
<body>
hello fuWaer<br>
</body>
<script language=javascript>
function demo()
{
showPageMask();
showMyPrompt("callbackFunction");
alert("!");
}
var g_my_prompt_div = null;
function showMyPrompt( callbackfunc )
{
g_my_prompt_div = document.createElement("<div style=position:absolute;top:200;left:300;width:100;height:50;background-color:#cccccc></div>");
g_my_prompt_div.innerHTML = "<input id=userinput value=请您输入数据><input type=button value=确定 onclick='myPromptSubmit(\""+callbackfunc+"\")'>";
document.body.appendChild(g_my_prompt_div);
}
function myPromptSubmit( callbackfunc )
{
var result = document.all.userinput.value;
document.body.removeChild(g_my_prompt_div);
document.body.removeChild(g_page_mask);
eval( callbackfunc+"(\""+result+"\")" );
}
function callbackFunction( result )
{
alert("user input: "+result);
}
var g_page_mask = null;
function showPageMask()
{
g_page_mask = document.createElement("<div style=\"position:absolute;top:0;left:0;width:"+document.body.clientWidth+";height:"+document.body.clientHeight+"\"></div>");
document.body.appendChild(g_page_mask);
g_page_mask.innerHTML = "<iframe style=\"FILTER:Alpha(opacity=20);width:100%;height:100%\" onclick=alert()></iframe>";
}demo();
</script></html>------------------------------------------------------------我要的代码是这样的我需要得到弹出层返回值后再继续执行下面的代码
如上面这个我修改过的代码,因为我需要利用到弹出层返回的值,要达到一开始弹出弹出层后需要点击弹出层的确定,然后再执行alert("!");
javascript 实现 sleep 或 wait是很难的.
Teabrowser 实现了window.sleep() function,
可下载看看.
网址:http://groups.google.com/group/teabrowser/web/TeaBrowser.zip
retObj=window.showModalDialog("childwin.htm",args,window_style)
window.showModalDialog弹出的是一个模式对话窗口,当执行了这句话后,除非关闭了childwin.htm,否则不会执行下面的语句,并且可以通过childwin.htm返回值到调用窗口,如返回retObj,可查看关于showModalDialog的具体用法,没错的,我就经常用到模式窗口
function demo()
{
showPageMask();
showMyPrompt("callbackFunction");
//alert("!");
}function callbackFunction( result )
{
alert("user input: "+result);
alert("!");
}
function sleep(timeout) {
window.showModalDialog("javascript:document.writeln('<script>window.setTimeout(function () { window.close(); }, " + timeout + ");<\/script>');");
}window.alert("before sleep ...");
sleep(2000);
window.alert("after sleep ...");
缺点-只有IE支持(IE7因为安全限制也而不能达到目的)。2-------------------------------------------
function sleep(millis) {
var notifier = NjsRuntime.createNotifier();
setTimeout(notifier, millis);
notifier.wait->();
}
看到 ->() 这样的语法,就象刚看到Prototype的 $() 函数一样让我惊为天人。不过直接在浏览器中这段脚本是会报告语法错误的。实际上它们需要经过预编译成客户端浏览器认可的JavaScript。
但是只有IE支持,而且操作也不方便楼上的方法没听过,不过只有IE支持(IE7因为安全限制也而不能达到目的)的缺点也不行看过
http://topic.csdn.net/t/20060303/22/4591744.html
的帖子里面的方法都是牺牲CPU来达到效果,只是忙等,无法达到效果FuWaer()的回调函数也想过
但是我弹出窗口获得的值是下面所有程序都要用的,都移到回调函数里不但破坏程序结构,而且不太现实
不知道怎么实现
不过估计也不能达到我sleep的目的我要求sleep是等待用户填写值
在此期间Js是不能继续执行下去的
var sleep = false;
function aa(){
if(!sleep){
显示提示框
sleep=ture
setTimeout(aa,100);
}else if(用户还没按确定){
setTimeout(aa,100);
}else{
继续执行的代码;
}
}
还是回避为主
不过你的方法还是破坏了程序结构我一个function不得不拆成几份
而且所有脚本都必须写成function
很麻烦