【发布时间】:2010-03-30 16:18:25
【问题描述】:
有人可以告诉我按下按钮时用于“隐藏”回发的技术吗?
【问题讨论】:
-
请用您自己的话定义“回发”。
-
看起来 OP 正在寻找 ajax - 不过不确定。您能否举一个(特定的)站点的示例,该站点可以满足您的需求?或者只是描述一下?
有人可以告诉我按下按钮时用于“隐藏”回发的技术吗?
【问题讨论】:
如果您想阻止页面刷新,您可以使用 Ajax Control Toolkit 中的 UpdatePanel。这可以让您只刷新页面的一部分,并且仅通过查看是无法判断的。
【讨论】:
Ajax 可能是您真正想要的解决方案,但是对于您想要做的事情有一个快速而肮脏的解决方案(如果我对您的理解正确的话)。你可以在你的 html 中放置一个隐藏的 iframe 并命名,比如说:
<iframe name='hidden-result'...
您可以将要提交的表单的目标设置为转到 iframe,例如:
<form target='hidden-result'...
只要确保隐藏 iframe,没有人会更聪明。当然,如果你真的想对响应做点什么,那就有点棘手了;)
【讨论】:
实际上,我发现在 IE 中隐藏回发的一种方法是使用间隔很短的页面转换:
<meta http-equiv="Page-Enter" content="blendTrans(Duration=.01)" />
<meta http-equiv="Page-Exit" content="blendTrans(Duration=.01)" />
通过添加一个非常短的混合过渡,这会导致页面从一个屏幕真正翻转到另一个屏幕。
在其他浏览器中,您可以执行以下操作:
<SCRIPT type="text/javascript">
function fadeInit() {
document.body.style.opacity=0.2; // initialise
}
function fadeIn() {
var bodyStyle=document.body.style;
if ( bodyStyle.opacity < 1) {
bodyStyle.opacity=((bodyStyle.opacity*10)+1)/10; //Add 0.1
setTimeout('fadeIn();',50)
}
}
</SCRIPT>
<body onload="fadeInit();fadeIn();">
第二个脚本的功劳:http://www.secretgeek.net/fajax.asp
【讨论】:
目前尚不清楚您到底在问什么,因为“回发”一词在您的问题上下文中放错了位置。这也是为什么我在评论中要求用你自己的话详细说明一下。
毕竟,我怀疑您只是想在按下按钮并执行附加到事件的一些 JavaScript 代码时阻止按钮的默认操作(提交表单)。如果这是真的,那么您需要做的就是让事件return false。
基本启动示例:
<input type="submit" value="submit" onclick="doStuff(); return false;">
或者如果doStuff() 本身已经返回true 或false,例如validateForm(this)左右,这样你就可以决定是否继续表单提交,然后这样做:
<input type="submit" value="submit" onclick="return doStuff();">
为了更干净、更隐蔽地处理这个问题,我建议看看jQuery。
【讨论】:
根据您所说的“隐藏回发”的含义,Post-redirect-get 是一种可以解决您的问题的常见模式。
基本思想是在处理完每个 POST 后进行重定向,以便客户端仅接收由 GET 命令生成的页面。除此之外,这可以防止客户在点击刷新按钮时意外重复发布。
【讨论】: