我有一个<select>元素,用于导航。您单击它可以选择要转到的页面,单击后它将转到该页面。这是它的代码:
<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
<option value="/item1" selected>Item 1</option>
<option value="/item2" selected>Item 2</option>
<option value="/item3" selected>Item 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当我使用它时,它会正确地转到页面,但是当点击后退按钮时,下拉列表中已经选择了我去的页面。例如,如果我在“项目 1”上,选择“项目 2”,然后通过浏览器的后退按钮返回到“项目 1”,则会在列表中选择“项目 2”,这有点令人困惑。
如何让它切换回默认值?
我有一个网站,如果用户导航到某个页面,那么他会根据页面上的某些条件收到对话框通知。用户可以从该页面导航到其他页面,当然也可以按这些页面上的后退按钮导航回该页面。
我想检测用户是否通过后退按钮到达此页面,因此不会再次显示对话框通知(因为用户已经看到了)。
有没有办法可靠地检测到这一点?
/page.html#A给定从到 的导航/page.html#B,有没有办法区分用户:
/page.html#A?我正在构建一个网络应用程序,其中单个页面在多个内容幻灯片之间进行转换,每个内容都由特定位置哈希标识,例如'#A', '#B'。
例如,当用户位于幻灯片“A”上并选择选项“B”时,位置将从 更改/page.html#A为/page.html#B。
转换后,location.hash==#B、 和back()(通过 JS 或浏览器按钮)将使用户返回到location.hash==#A。
但是,没有什么可以阻止用户手动更改 URL 栏中的哈希值。在这种情况下,浏览器会认为这是向前导航,插入/page.html#B后退历史记录。也就是说,导航历史记录将是#A>> #B,#A并且单击返回现在会将用户带到#B。
我需要区分这两种情况,以便当我知道用户已手动更新 url 哈希时,我可以触发go(N)同步浏览器后退/下一个状态。
1)HTML5popstate事件:
我曾希望html5 popstate事件(https://developer.mozilla.org/en-US/docs/Web/Events/popstate)只会在case#1中被触发,但我可以确认它在这两种情况下都会发生火灾。
2)浏览器.onhashchange事件
我可以确认,如果存在,该事件在两种情况下都会被触发
hashChange()
3)我可以确认jQuery mobile在这两种情况下都会被触发
4)读取浏览器导航历史记录
我的下一个想法是维护一个哈希历史记录的JS数组,并比较新的哈希值和浏览器历史记录是否与JS数组匹配,但是出于安全原因JS无法读取浏览器位置历史记录。
我知道如果我调用 window.history.forward(),并且不存在页面,则不会发生任何事情。我正在考虑哈希历史记录的JS数组,调用forward(),检查新的location.hash(现在安全性允许),与JS数组进行比较,然后调用go(N)来同步浏览器后退/下一个状态。但有点乱。
我有一个委托组件,除了通过路径(例如/tournament/:id)中的ID解析对象、检测锦标赛的类型并转发(通过router.navigate(..))到另一条路线(例如/tournament/:id/league)之外,什么也不做。
问题是浏览器后退按钮将返回到委托组件并显示我的委托组件的空模板。
router.navigate除了考虑以下因素之外,是否还有其他选项可以转发到另一个组件:
/tournament/:id/league应该反映在浏览器 URL 中我的HomeView(我存储列表的位置Movies)有NavigationView和NavigationLink目的地为DetailView。
当我想添加NavigationBarItems我的时DetailView,它使我的GoBack Slide(从DetailView到HomeView)毫无用处。当我停止在屏幕的 1/3 处滑动时,应用程序冻结。
我没有额外NavigationView的DetailView,因为当我拥有它时,我把它加倍了DetailView。
我发现几行代码毁了一切。
它的一部分是NavigationBarItems:
.navigationBarItems(trailing: Button(action: {
self.showingEditScreen.toggle()
}) {
Image(systemName: "pencil")
.imageScale(.large)
.accessibility(label: Text("Edit Movie"))
.padding()
})
Run Code Online (Sandbox Code Playgroud)
和HomeView:
struct HomeView: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: Movie.entity(), sortDescriptors: [
NSSortDescriptor(keyPath: \Movie.title, ascending: true),
NSSortDescriptor(keyPath: \Movie.director, ascending: true)
]) var movies: FetchedResults<Movie>
@State private var showingAddScreen …Run Code Online (Sandbox Code Playgroud) 我正在使用 Navigation 2 并setUrlStrategy(PathUrlStrategy());
添加了它WillPopScope,但onWillPop单击浏览器的后退按钮时不会调用 。
Widget build(context) {
return WillPopScope(
onWillPop: () async {
print('here');
if (currentStep == 0) {
return false;
}
return true;
},
child: Scaffold(...
Run Code Online (Sandbox Code Playgroud) 自从 Android 12 的新 Android Splash Screen API 开始,在显示闪屏时后退按钮不再响应,看起来 UI 线程已完全接管,我无法重新启用后退按钮,这是一个问题,例如,如果用户不小心打开应用程序,他通常会单击后退按钮,应用程序关闭后问题就会立即解决(或者至少这是我的应用程序在这个新 API 之前的行为),但现在这是一个糟糕的用户体验。
所以我想知道您是否找到了解决此问题的方法并在加载数据时显示启动屏幕时启用“后退”按钮?
我测试了很多教程并下载了源代码,但在所有教程中,后退按钮都没有响应。
例如这个:https: //github.com/philipplackner/SplashScreenAndroid12
感谢您的帮助,非常感谢。
我有一个网页x.php(在我的网站的密码保护区域),它有一个表单和一个按钮,使用该POST方法发送表单数据并打开x.php#abc.这非常有效.
但是,如果用户决定在Internet Explorer 7中导航回来,则会x.php清除原始文件中的所有字段,并且必须再次输入所有字段.我无法在会话中保存发布的信息,我试图了解如何让IE7按照我想要的方式运行.
我在网上搜索并找到了答案,表明HTTP标头应该包含显式的缓存信息.目前,我试过这个:
session_name("FOO");
session_start();
header("Pragma: public");
header("Expires: Fri, 7 Nov 2008 23:00:00 GMT");
header("Cache-Control: public, max-age=3600, must-revalidate");
header("Last-Modified: Thu, 30 Oct 2008 17:00:00 GMT");
Run Code Online (Sandbox Code Playgroud)
及其变化.没有成功.使用WireShark等工具查看返回的标题,向我展示了Apache确实尊重我的标题.
所以我的问题是:我做错了什么?
我有一个主要的活动.它的主要目的是处理Tab菜单.如果用户单击选项卡,它将加载另一个活动作为子活动,仍然显示选项卡菜单.我使用Intent来做到这一点:
setContent(new Intent(this,B.class))
Run Code Online (Sandbox Code Playgroud)
该子活动也具有onclick功能.如果用户单击其中一个链接,它将使用setContentView命令加载xml布局文件:
setContentView(R.layout.B1);
Run Code Online (Sandbox Code Playgroud)
现在,当加载xml文件时按下后退按钮,它将关闭整个应用程序.有没有办法防止这种情况,比如说,回到子活动或主要活动?
感谢你的帮助.
我正在构建一个警报应用程序.我目前有一个ListActivity,它显示警报列表和另一个改变特定警报时间的活动.我的问题是,当我决定进入活动以更改闹钟的时间然后按下后退按钮时,它不会刷新.但是,我已经实现了一个重定向回ListActivity的按钮,如果按下它,会刷新警报列表.按下后退按钮后,如何刷新警报列表?
back-button ×10
android ×3
browser ×2
javascript ×2
android-12 ×1
angular ×1
default ×1
flutter-web ×1
forms ×1
hash ×1
html ×1
ios ×1
navigation ×1
redirect ×1
refresh ×1
router ×1
swiftui ×1