在浏览器关闭之前的事件及处理? 设一个客户端标志变量,如果进行了动作就置相应状态,onbeforeunload时判断标志变量的值,如果为原值则提交一个请求到服务端update数据库,为新值不做这个提交。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我现在是只能这样实现,做一个关闭按钮,这个关闭按钮触发后到下一个页面然后update数据库,恢复值,然后关闭,但是这样就无法控制用户点窗口关闭,我试了用onbeforeunload但是onbeforeunload好像只能返回提示,并不能执行sql语句,我写的是PHP页面 <body unonload=write_data()> 请问8080,是在write_data()里写PHP和执行SQL吗,我试过这样是不行的 以下测试通过<script>function mycheck(){//这里加条件判断myifrm.document.myform.submit();}</script><body onbeforeunload=mycheck()>ok<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>hidden.htm<form name=myform action=update.php></form>update.php<?phprequire("pass.inc");require("rs.inc");require("func.inc");$dbm = new database();if (! $dbm->connect2(DB_HOST, DB_USER, DB_PASSWORD)) { abort("test1", __LINE__, $dbm->errstring);}if (! $dbm->selectdb("test1102")) { abort("test2", __LINE__, $dbm->errstring);}$rsm = new recordset($dbm);$tmpSql = "update test set username=\"second\" where username=\"first\"";if (! $rsm->open($tmpSql)) { abort("test3", __LINE__, $rsm->errstring); $rsm->close;}$rsm->close;$dbm->close;?> 先谢谢seabell(百合心),但是我按你写的不行啊,点右上角关闭按钮,这段代码没有起作用,不知道您是怎么测试通过的,是不是有我没有注意到的地方 我在function mycheck(){//这里加条件判断myifrm.document.myform.submit();}里加了一句alert(1),关闭提示有提示,但是myifrm.document.myform.submit();不起作用 我试过了,关闭窗口时是会提交隐含帧的,也就是会执行$tmpSql = "update test set username=\"second\" where username=\"first\"";在页面上不会有任何反应,你可以查看表里的值。我试过,关闭前和关闭后是不同的值,update正常。 其实我试了下,关键是我myifrm.document.myform.submit();这句报错,说拒绝访问 <script>function mycheck(){//这里加条件判断myifrm.document.myform.submit();}</script><body onbeforeunload=mycheck()>ok<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>你的htm文件是这样写的吗?页面中加了<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>吗 我的代码<?phpinclude("../web/include/function.php");include("../web/include/database.php");$db=new Database();$db->Connect();?><html><?phpif ($db->conn==null) { $db->Connect();}$order_id=$id;$sql="select * from orders where order_id='".$id."'";$res = mysql_query($sql, $db->conn) or die(mysql_error());$res_num = mysql_num_rows($res);$row = mysql_fetch_array($res);$flag=trim($row["flag"]);if ($flag=="1"){ $sql="update orders set flag='0' where order_id = '$order_id'"; $db->DoInsert($sql);}else{ echo "<script>alert('此订单不可操作!');opener.location.reload();window.close(); </script>";}?><body onbeforeunload="mycheck();"><iframe id=myifrm src="hidden.htm" style="display:none"></iframe> <table align="center"> <tr> <input type="button" value="关闭" onClick="orderclose();"> </td> </tr> </table></form><?phpmysql_close ($db->conn);?></body></html><script language=javascript>function mycheck(){ alert (1);myifrm.document.myform.submit();}function orderclose(){ var o=window("myifrm").document.all;alert (o);}</SCRIPT> hidden.htm代码<HTML><HEAD><TITLE></TITLE></HEAD><BODY><?php echo "<script>alert (<?php echo $order_id;?>); </script>"?><form name="myform" action="orderclose.php?order_id=<?php echo $order_id;?>"><input type=text name=aaa value=123></form></BODY></HTML> 调试了半天出现访问拒绝,是我自己打错了名字,一个是hidden.php 一个是hidden.htm现在发现好像只有htm才能转到后面一页,但是后面一页需要$order_id这个值,我应该怎么传过去? 这个技术怎样实现的?我搞不明白 请问htmleditor的问题 div重叠,如何点到被挡住的div 为什么在IE 8.0 和 firefox 下无法关闭窗口 F11功能键使窗口最大化问题 在文本输入框中扫按回车怎么会清空啊?如何使它不清空呢? 在那里能查到各种内置对象的属性,方法,使用说明啊 在360浏览器textarea获取不到焦点 请教:javascript如何动态的删除表单内的控件。急,在线等待。 这种需求的正则如何写 求一验证“价格”的正则表达式。 实现一个删除链接
function mycheck()
{
//这里加条件判断
myifrm.document.myform.submit();
}
</script>
<body onbeforeunload=mycheck()>
ok
<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>hidden.htm
<form name=myform action=update.php>
</form>update.php
<?php
require("pass.inc");
require("rs.inc");
require("func.inc");$dbm = new database();
if (! $dbm->connect2(DB_HOST, DB_USER, DB_PASSWORD)) {
abort("test1", __LINE__, $dbm->errstring);
}
if (! $dbm->selectdb("test1102")) {
abort("test2", __LINE__, $dbm->errstring);
}$rsm = new recordset($dbm);$tmpSql = "update test set username=\"second\" where username=\"first\"";if (! $rsm->open($tmpSql)) {
abort("test3", __LINE__, $rsm->errstring);
$rsm->close;
}$rsm->close;
$dbm->close;
?>
function mycheck()
{
//这里加条件判断
myifrm.document.myform.submit();
}
里加了一句alert(1),关闭提示有提示,但是myifrm.document.myform.submit();
不起作用
在页面上不会有任何反应,你可以查看表里的值。
我试过,关闭前和关闭后是不同的值,update正常。
function mycheck()
{
//这里加条件判断
myifrm.document.myform.submit();
}
</script>
<body onbeforeunload=mycheck()>
ok
<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>你的htm文件是这样写的吗?页面中加了<iframe id=myifrm src="hidden.htm" style="display:none"></iframe>吗
include("../web/include/database.php");$db=new Database();
$db->Connect();
?>
<html><?php
if ($db->conn==null)
{
$db->Connect();
}
$order_id=$id;$sql="select * from orders where order_id='".$id."'";$res = mysql_query($sql, $db->conn) or die(mysql_error());
$res_num = mysql_num_rows($res);
$row = mysql_fetch_array($res);$flag=trim($row["flag"]);
if ($flag=="1"){
$sql="update orders set flag='0' where order_id = '$order_id'";
$db->DoInsert($sql);
}else{
echo "<script>alert('此订单不可操作!');opener.location.reload();window.close(); </script>";
}?>
<body onbeforeunload="mycheck();">
<iframe id=myifrm src="hidden.htm" style="display:none"></iframe> <table align="center">
<tr>
<input type="button" value="关闭" onClick="orderclose();">
</td>
</tr>
</table>
</form><?php
mysql_close ($db->conn);
?>
</body>
</html><script language=javascript>
function mycheck(){
alert (1);
myifrm.document.myform.submit();
}
function orderclose(){
var o=window("myifrm").document.all;
alert (o);
}
</SCRIPT>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD><BODY>
<?php echo "<script>alert (<?php echo $order_id;?>); </script>"?>
<form name="myform" action="orderclose.php?order_id=<?php echo $order_id;?>">
<input type=text name=aaa value=123>
</form>
</BODY>
</HTML>
现在发现好像只有htm才能转到后面一页,但是后面一页需要$order_id这个值,我应该怎么传过去?