我有一个表单,允许用户键入数据,然后提交.如果一切都在这个动作结果上运行良好,那么我会将用户重定向回感谢页面.
我现在的问题是,当用户点击后退按钮时,他们将能够返回到表单页面,输入仍然存在.
如果用户再次点击提交,我将获得一些潜在的奇怪错误.
那么就asp.net mvc而言,处理点击后退按钮的用户的最佳方法是什么?
谢谢!
我正在使用 pushState 更改网站的网址:
history.pushState("", "info", "/info");
Run Code Online (Sandbox Code Playgroud)
这很好用,但现在后退按钮不起作用。我相信我需要使用 onPopState 编写自己的后退和前进按钮行为,该行为通过历史堆栈并呈现适当的页面。诀窍是,当“后退”为空时,它应该执行后退按钮通常会做的事情(在用户进入我的网站之前“返回”到页面)。
这似乎是非常标准的行为,是否有我可以使用的配方/一些标准代码?
我使用以下代码在我的应用程序中自定义导航栏上的后退按钮:
UIImage *backButton = [[UIImage imageNamed:@"backButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage *backButtonOn = [[UIImage imageNamed:@"backButton_on"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButton
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonOn
forState:UIControlStateHighlighted
barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
它工作得很好,除非我呈现UIImagePickerController并在照片库中输入相册,后退按钮也是自定义后退按钮.如何取回图像选择器中的原始后退按钮?
如果他们在文本框中输入了某些内容,我想在浏览器的刷新或按下按钮时警告用户.所以我使用了window.onbeforeunload函数来做到这一点.
window.onbeforeunload = function () {
if (if user hasn't entered any thing) {
return;
}
return 'Entered data will be lost.';
};
Run Code Online (Sandbox Code Playgroud)
这个javascript代码在Firefox和Chrome中运行良好.但在IE中,此功能会触发部分回发的按钮.在IE中克服这个问题的任何解决方案?谢谢 :)
javascript jquery internet-explorer back-button onbeforeunload
我想在不使用任何外部插件的情况下检测java-script/jquery中的浏览器后退按钮.
我将支持以下浏览器
IE8,IE9,火狐,Chrome
我搜索了这么多链接,并在代码项目下面找到了部分代码
<body onbeforeunload=”HandleBackFunctionality()”>
function HandleBackFunctionality()
{
if(window.event)
{
if(window.event.clientX < 40 && window.event.clientY < 0)
{
alert("Browser back button is clicked...");
}
else
{
alert("Browser refresh button is clicked...");
}
}
else
{
if(event.currentTarget.performance.navigation.type == 1)
{
alert("Browser refresh button is clicked...");
}
if(event.currentTarget.performance.navigation.type == 2)
{
alert("Browser back button is clicked...");
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常的IE浏览器.这意味着我可以在IE浏览器中获取window.event.clientX和clientY值.但在chrome/firefox中无法正常工作.
单击浏览器后退按钮时,我需要刷新页面.
如何在所有浏览器中检测浏览器后退按钮点击事件(IE,Firefox,Chrome)
任何帮助,将不胜感激.
当我尝试从子片段移动到父片段时,我的应用程序退出(它不会崩溃)。这里 LandingActivity.java 是我调用片段 ChannelGrid.java 的主要活动,它调用片段 GridMain.java。当我按下后退按钮时片段 GridMain 应用程序中的移动设备退出而不是移动到 ChannelGrid.java。我已将 addToBackStack("tag") 添加到片段并尝试使用 onKey()..我也在不同的设备上测试了我的应用程序..我检查了其他解决方案有同样的问题并尝试过,但没有任何效果..
导航抽屉-LandingActivity.java-ChaanelGrid.java(Fragment)-GridMain.java(Fragment)
登陆活动.java
currentFragment = new ChaanelGrid();
currentFragment.setArguments(args);
frgManager = getFragmentManager();
frgManager.beginTransaction().add(R.id.content_frame, currentFragment).addToBackStack("tag")
.commit();
Run Code Online (Sandbox Code Playgroud)
ChaanelGrid.java
Fragment currentFragment = new GridMain();
FragmentManager frgManager;
frgManager = getFragmentManager();
frgManager.beginTransaction().add(R.id.content_frame, currentFragment).addToBackStack("GridMain")
.commit()
Run Code Online (Sandbox Code Playgroud)
GridMain.java(我也试过没有 onKey() 方法,但没有奏效)
rootView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK)
{
Fragment currentFragment = new ChaanelGrid();
FragmentManager frgManager;
frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
.commit();
return true;
}
Run Code Online (Sandbox Code Playgroud)
logcat 详细
10-31 21:46:57.954 …Run Code Online (Sandbox Code Playgroud) 在iOS 9发布之前,我开发了一款面向iOS 8.4的应用.我UITableView通过segue of kind"Show(例如Push)" 使用了一些相互连接.它与正确的行为完美配合:每次我从一个切换UITableView到另一个时,后退按钮出现,所以用户可以回到前一个场景; 后退按钮也出现UITableView在UIViewController,使用相同类型的segue.
现在,我已经升级到Xcode的最新版本,并针对应用到iOS 9.0,我得到了这个问题:现在,如果我走的时候UITableView到另一个UITableView,后退按钮不会出现了,但如果我走的时候UITableView到UIViewController,背按钮出现.我见过其他开发人员遇到了类似的问题(你可以在这里,这里和这里看到),但我不明白他们是如何解决的(除了第三个链接,但这不是我的情况).任何人都知道如何让按钮再次工作?提前致谢
问题描述:
我的应用程序有主要活动和设置活动.每次关闭设置活动后,主活动都会重新创建.
可以通过finish()在两个位置关闭主活动(应用程序退出):操作栏中的主页按钮和后退按钮(硬件或弹出栏).
Home按钮工作没有问题,Back按钮在开始时工作,但如果用户在Settings Activity中,关闭它并返回到Main Activity,onBackPressed()函数不再被调用.
如果我删除娱乐,后退按钮工作正常,就像主页按钮一样.
所以,如果有人知道为什么重新创建()弄乱Back按钮?
谢谢.
部分相关代码:
主要活动:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Open Settings Activity
case R.id.menuSettings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, REQUEST_SETTINGS);
return true;
// Close the App
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case REQUEST_SETTINGS:
// Recreate activity
recreate();
break; …Run Code Online (Sandbox Code Playgroud) 注意到的奇怪的事情:当您使用setViewControllers:animated替换UINavigationController中的视图控制器堆栈时:动画过程中将显示后退按钮,动画完成后该按钮将消失。仅在iOS10(设备和模拟器)中找到,iOS8和9可以正常工作(无后退按钮)。有人遇到过这个问题吗?
我在这里有点微妙的情况.在我的组织中,我们设计库存管理系统,它是一个基于JSP页面和servlet的Web应用程序,用于处理它们.
我被要求解决一个具体问题.我们有一个带有HTML表单的JSP页面,其中有库存详细信息.当用户手动输入详细信息并提交表单时,库存详细信息在数据库中更新,并且工作正常.
问题是这样的:当用户按下浏览器的后退按钮时,用户可以转到他提交详细信息的上一页.当用户提交此数据时,数据会再次保存到数据库中.我需要防止这种行为.(清楚并重新加载页面的东西.)
到目前为止我做的事情:清除浏览器缓存.Code工作正常但不是预期的结果.
遗憾的是,由于公司规定,我无法分享代码.我需要的是帮助防止这种行为或解决方法.
提前致谢..
back-button ×10
javascript ×3
android ×2
html ×2
ios ×2
jquery ×2
asp.net ×1
asp.net-mvc ×1
browser ×1
form-submit ×1
ios10 ×1
java ×1
objective-c ×1
pushstate ×1
recreate ×1
segue ×1
servlets ×1
uiappearance ×1
uitableview ×1