问题在于iframes/bookmarkablity和后退按钮功能.
我面临的这个问题是如何使用可收起书签的url创建iframe而不会丢失后退按钮功能.让我们说所有页面都在同一个域中,并且子页面通知父页面的子页面加载以更新window.location.hash属性修改当前浏览器地址栏.
url的更新在IE/FF/webkit上正常工作.但是后退按钮在IE-8中按预期工作,但浏览器后退按钮在FF/webkit中不起作用(只是url更改了前一页未加载).如果我们不更新window.location.hash属性,则后退按钮可以工作但窗口网址没有意义.
有没有办法在浏览器中获得此功能,或者是否有更简单的方法(任何其他js库).所有页面都在同一台服务器上提供,以解决权限问题.
以下文件是
儿子和孙子是链接的,父子iframe中的儿子和孙子之间的任何导航都会更新地址栏,但会破坏FF中的后退按钮.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Parent</title>
<style>
body{
margin:0;
overflow: hidden;
}
iframe {
border: 1;
height: 100%;
width: 100%;
overflow-x: hidden;
}
</style>
<script language="javascript">
function update(url,title){
alert("parent_update")
document.title=title;
window.location.hash ="#" + url; // comment this to get the back button working
//in FF/webkit --but makes the url non bookmarkable
}
function parent_loader(){
alert("parent_loader")
if (window.location.hash.substr(1)) {
document.getElementById("embedframe").src=window.location.hash.substr(1);
} else {
document.getElementById("embedframe").src="son.html";
}
}
</script>
</head> …Run Code Online (Sandbox Code Playgroud) 我想禁用导航控制器的默认后退按钮
self.navigationItem.rightBarButtonItem.enabled = NO;
// Below code does not work since leftBarButtonItem is always nil.
self.navigationItem.leftBarButtonItem.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
我已经手动显示如下,但有没有任何属性禁用默认后退按钮只有一行?
backButton = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, 100, 30)];
[backButton setBackgroundImage:[UIImage imageNamed:@"backbutton_100.png"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@" All Customers" forState:UIControlStateNormal];
backButton.titleLabel.font = [UIFont boldSystemFontOfSize:12];
[buttonView addSubview:backButton];
UIBarButtonItem* leftButton = [[UIBarButtonItem alloc] initWithCustomView:buttonView];
self.navigationItem.leftBarButtonItem = leftButton;
[leftButton release];
// Now it is working.
self.navigationItem.leftBarButtonItem.enabled = NO;
Run Code Online (Sandbox Code Playgroud) 我试图用KEYCODE_BACK调用我的主要活动的onKeyDown(),这样它就像我自己按下"后退"按钮一样.我使用以下代码执行此操作:
KeyEvent goBackDown = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK,0,0);
goBackDown.dispatch(activity);
SystemClock.sleep(50); // as if human pressed the key
KeyEvent goBackUp = new KeyEvent(0,0,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_BACK,0,0);
goBackUp.dispatch(activity);
Run Code Online (Sandbox Code Playgroud)
我的活动的onKeyDown()目前只调用:
return super.onKeyDown(keyCode, event);
Run Code Online (Sandbox Code Playgroud)
然而,与真正的 Back按钮不同,当调用"假"代码时,活动拒绝变得不可见.
为什么?
我知道这里有很多关于这个问题的问题.但他们中没有人能得到我正在寻找的答案.
我在ScrollView中有7个ET.当我启动应用程序时,没有ET有焦点,因为我在我的整体布局中添加了以下两行:
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
当我点击ET时,会显示我想要的软键盘,然后我设置了值(比方说20).我按下'2'后跟'0'然后按后退按钮.此时键盘消失,但焦点仍然存在.当按下后退按钮隐藏键盘时,我也希望清除焦点.
因为当清除焦点时,ET的布局设置为我想要的.
他们都有一些代码,这是:
// Right Cable
RightCable = (EditText) findViewById (R.id.RightCable);
RightCable.setRawInputType(Configuration.KEYBOARD_12KEY);
RightCable.setOnFocusChangeListener(FocusChanged);
RightCable.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if(RightCable.isFocused()){
LengthRightCable = Double.parseDouble(RightCable.getText().toString());
Calculate();
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().matches("")) {
RightCable.setText("0.00");
Selection.setSelection(RightCable.getText(), 0, 4);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我使用焦点监听器将ET的输入更改为5.00而不是0的数字.
OnFocusChangeListener FocusChanged = new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
EditText et = …Run Code Online (Sandbox Code Playgroud) android focus back-button android-softkeyboard android-edittext
我想抓住Android的后退按钮事件.我知道在表单上已有很多关于此的内容,但是,我的代码不能像给出的示例那样工作.这是我捕获事件的代码片段:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK){
Log.d(TAG, "back key captured");
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
@Override
public void onBackPressed(){
Log.d(TAG, "in onBackPressed");
finish();
}
Run Code Online (Sandbox Code Playgroud)
任何事件被触发的LogCat输出都没有显示出来.有人知道可能的原因吗?
谢谢.
我有这个视图,改变div内的文本.
然后,用户可以单击链接以跳转到另一个页面.但是当用户按下"后退"按钮时,所有DOM更改都将丢失.
FF会记住更改的div文本,但Chrome和IE不会.
我发现了类似的问题,但在我的情况下,不可能通过url哈希来概括状态,因为div包含随机数据.
我需要的是当用户返回时,div从相同的数字序列中填充.
<script type="text/javascript">
function ChangeText() {
var newText = "";
for (var i = 0; i < 10; i++) {
newText = newText + Math.random() * 100;
newText = newText + "<br />";
}
$("#container").html(newText);
}
</script>
<div id="container">
INITIAL TEXT
</div>
<button onclick="ChangeText()">Click here to generate random numbers</button>
<br/>
<a href="http://www.google.com">External link</a>
Run Code Online (Sandbox Code Playgroud) 您看到我正在创建一个完全自定义的导航栏,当我创建后退按钮时,它不会保留在正确的位置,因为您可以在代码下方看到.
这是我的应用程序代码
- (void)viewDidLoad
{
[super viewDidLoad];
if(self.navigationController.viewControllers.count > 1) {
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setTitle:@"" forState:UIControlStateNormal];
[backButton setBackgroundImage:[UIImage imageNamed:@"backButton.png"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside];
backButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 45.0f);
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backButtonItem;
}
Run Code Online (Sandbox Code Playgroud)
}
图片http://s8.postimage.org/k5faqz0jp/Screen_Shot_2013_01_24_at_5_30_10_PM.png
从文档(http://www.asual.com/jquery/address/docs/)中可以看出,该插件有一个事件可以检测何时按下浏览器的后退/前进按钮.
$ .address.externalChange(FN)
我的问题是,是否有办法知道何时按下背部以及何时按下前进.例如,这将适用于两种情况:
$.address.externalChange(function() { console.log('back/forward pressed'); });
Run Code Online (Sandbox Code Playgroud)
谢谢.
Bootstrap 2.3.2
我在我的项目中使用Bootstrap中的选项卡来显示内容.在单个页面上有多个具有不同内容的选项卡,在这些选项卡中是用于将用户带到网站上其他页面的链接.
不幸的是,默认情况下,选项卡不支持后退按钮导航,因此如果用户访问另一个页面并点击浏览器的后退按钮,该选项卡将恢复到第一个打开的选项卡,而不是上次查看时的活动选项卡.页.
以下来自FrançoisZaninotto的Javascript 解决了Chrome,Firefox和Safari中的这个问题.François还说它适用于IE8 + - 但在我的测试中,我无法让它在IE8,IE9或IE10上运行.有谁知道如何让这个在IE8 +中工作?可能吗?
$(document).ready(function() {
// add a hash to the URL when the user clicks on a tab
$('a[data-toggle="tab"]').on('click', function(e) {
history.pushState(null, null, $(this).attr('href'));
});
// navigate to a tab when the history changes
window.addEventListener("popstate", function(e) {
var activeTab = $('[href=' + location.hash + ']');
if (activeTab.length) {
activeTab.tab('show');
} else {
$('.nav-pills a:first').tab('show');
}
});
});
Run Code Online (Sandbox Code Playgroud)
`
<ul id="myTab" class="nav nav-pills">
<li class="active"><a href="#tab1" data-toggle="tab">Tab1</a></li>
<li><a href="#tab2" …Run Code Online (Sandbox Code Playgroud) 问题可能是愚蠢但我会问它,例如我有3个活动,活动1,2,3.
活动1,我点击一个按钮,转到活动2活动2,我点击一个按钮,转到活动3.活动3,我点击后退按钮,我希望它回到活动1.任何想法怎么做?对不起Android新手.谢谢!
back-button ×10
android ×4
javascript ×3
jquery ×2
keyevent ×2
objective-c ×2
address-bar ×1
bookmarks ×1
button ×1
dom ×1
focus ×1
html5 ×1
iframe ×1
ios ×1
iphone ×1
onkeydown ×1
onpause ×1
plugins ×1