我在JS响应中使用这种类型的行
if (history && history.pushState){
history.pushState(null, null, '<%=j home_path %>');
}
Run Code Online (Sandbox Code Playgroud)
但是当我back在浏览器中单击时,我会看到响应的JS代码而不是上一页.
有没有办法使后退按钮工作,所以它会重新请求最后一个网址的页面(之前home_path作为pushStated?
更新:
我发现了这个 ..似乎其他人也有同样的问题.. History.js也没有解决它
所以要确认那里的一些评论..这只发生在chrome中
我的想法
我认为所有这些的根源是popstate请求相同类型的pushstate文档(js响应).需要做的是在popstate请求html响应..我只是不知道如何
更多更新:
看到http://railscasts.com/episodes/246-ajax-history-state它提到使用
$(window).bind("popstate", function() {
$.getScript(location.href);
});
Run Code Online (Sandbox Code Playgroud)
这解决了问题,但根据理解jQuery $ .getScript()与 ajax缓存它将添加时间戳..污染网址..关闭它使它不再工作具有相同的效果..
谁知道如何解决这个问题?
更多更新
我在整个interweb中跟踪了问题的踪迹,并以chrome中的一个问题结束,这个问题指向rails问题(然而firefox正常工作)和rails-ujs中的问题,不包括响应中的Vary Header
示例可以在这里找到
我想警告用户,如果背压将完成堆栈上的最后一个活动,从而退出应用程序.我想在接下来的几秒钟内弹出一个小吐司并检测到第二次背压,然后才打电话finish().
我已经编写了背压检测编码onBackPressed(),但是我找不到一种明显的方法来查看背堆上剩下多少活动.
谢谢.
我想检查当设备后退按钮被击中时是否有多个屏幕在堆栈上.如果是,我想显示前一个屏幕,如果没有,我想退出应用程序.
我已经检查了一些示例,但是那些使用了BackAndroid和Navigator.但他们俩都被弃用了.BackHandler是BackAndroid的替代品.我可以使用props.navigation.goBack(null)显示上一个屏幕.
但是我无法找到用于在堆栈中查找屏幕计数的代码.我不想使用已弃用的Navigator!
navigation back-button back react-native react-native-android
我有我的应用程序,您需要登录才能进入其他页面.
所以第一页是"登录",它检查你是否已经登录,如果是,你将被重定向到主页应用程序,如果不是,它将显示你的登录页面.
现在的问题是,当用户在记录的页面区域内时,他点击回来,他将进入"登录"页面,然后重定向回主页,因为他已经登录.
所以他陷入无限循环.
如何从历史记录中删除登录页面.
就像在android"android从历史堆栈中删除活动"
我在这里和其他地方搜索了很多帖子,但似乎无法找到我的问题的解决方案.我有一个显示数据库条目的页面:database.php.可以使用表单过滤这些条目.当我过滤它们并只显示我感兴趣的那些时,我可以点击一个条目(作为链接),它将我带到那个条目页面(通过php GET).当我在该条目页面上(即"view.php?id = 1")并点击后退按钮(返回到database.php)时,过滤器表单需要确认表单重新提交.有什么方法可以防止这种情况吗?
这里有一些(简化的)代码示例:
database.php中:
<form>
<select>
<option>1</option>
<option>2
<option>
</select>
<input type="submit" name="apply_filter" />
</form>
<?php
if ( isset( $_POST[ "apply_filter" ] ) ) { // display filtered entries
$filter = $_POST[ "filter" ];
$q = "Select * from table where col = '" . $filter . "'";
$r = mysql_query( $q );
} else { // display all entries
$q = "Select * from table";
$r = mysql_query( $q );
}
while ( $rec = mysql_fetch_assoc( $r …Run Code Online (Sandbox Code Playgroud) 我的问题是后退按钮导致浏览器在表单创建上一页时说"页面已过期".
例:
现在,当访问者点击浏览器中的后退按钮时,它将显示"页面已过期"之类的内容.
相反,应显示上一页没有警告(第2页,带有用户列表)
你的策略是如何解决这种行为的?
我需要知道一种通用的方法来区分来自启动器的活动调用和来自我的应用程序内的另一个活动的调用,或活动堆栈上的BACK
任何人?现在这让我烦恼了一段时间,我需要把它休息一下......
在此先感谢JQCorreia
基本上,我有一个包含表单的页面.当用户提交该表单时,将调用Javscript函数并向用户动态显示新表单.
此时,我希望用户能够单击浏览器的后退按钮并返回到第一个表单.这可能吗?
感谢您的快速回复,但我无法让pushState工作.单击后退按钮后,HTML仍显示"第二个表单".
这是我用来测试它的代码:
<script>
function newPage(){
history.pushState({state:1}, "State 1", "?state=1");
document.getElementById('formBox').innerHTML="second form";
}
</script>
<input type="button" onclick="newPage();" value="forward" />
<div id='formBox'>first form</div>
Run Code Online (Sandbox Code Playgroud) 预期结果:在textarea中输入的内容应该仍然存在
实际结果:
为什么在使用HTTPS时会发生这种情况?我怎么能阻止这个?浏览器或网站是否负责?
在Wp7上,当用户在显示电话键盘时按下页面上的"开始"按钮并点击设备返回按钮时,应用程序崩溃,异常如下: -
The parameter is incorrect.
at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
at MS.Internal.XcpImports.MethodPack(IntPtr objectPtr, String methodName, Object[] rawData)
at MS.Internal.XcpImports.UIElement_TransformToVisual(UIElement element, UIElement visual)
at System.Windows.Controls.SipHelper.AdjustFrame(FrameworkElement element, Double bottomMargin, Double& stillObscured)
at System.Windows.Controls.SipHelper.SelectionChanged(Object sender, RoutedEventArgs e)
at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Run Code Online (Sandbox Code Playgroud)
我无法理解生成异常的位置.
谢谢,金谷