为什么 Chrome 在使用后退按钮后不显示选定的<选项>元素
Why does Chrome not show a selected <option> element after using the back button?
我有一个包含单个<option>
元素的<select>
标签:
<select id="someselect">
<option value="2">B</option>
</select>
单个<option>
后来使用 jQuery 替换。新的选项列表始终包含旧选项:
selected = $('#someselect').val();
$('#someselect').html('<option value="1">A</option><option value="2">B</option>').val(selected);
这按预期工作。但是,当在谷歌浏览器中导航离开网页,然后单击后退按钮时,会发生一些奇怪的事情。选择标记返回到其初始状态(有意义),但未选择单个<option>
元素!
Chrome 中出现此行为的原因是什么?
我创建了一个最小的工作示例:http://dl.dropbox.com/u/27566470/backdemo.html
最初只有一个<option>
.首先单击"单击"以替换选项(但保持选中"B"选项),然后单击"Google"以导航离开,然后使用 Chrome 的后退按钮查看只有一个未选择的选项的 <select>
标记。
编辑:澄清一下,我对如何解决这个问题不感兴趣。我很好奇为什么Chrome会这样工作。使用后退按钮后提供原始(未修改)DOM 是有意义的,但为什么没有选择唯一的选择选项?
回答我自己的问题,这似乎是一个铬错误。我提交了一个当前已确认并分类的错误:http://code.google.com/p/chromium/issues/detail?id=125509
所以希望这应该在未来:)
因为每个在文档外部导航的浏览器(# 仍在内部)在导航时都会加载服务器缓存版本,并且当您选择一个selected
选项时,Chrome 会修改 DOM,当您返回时,它会再次加载selected
因为当使用浏览器后退按钮时,它使用页面的缓存版本,但在您的页面中有动态数据丢失,因此浏览器找不到先前选择的值,您可以使用jQuery进行设置:
$(document).ready(function(){
$('#someselect').val('0');
});
- 根据select选项元素将表单重定向到不同的URL
- WebdriverIO waitForExist()选择元素's选定的选项
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 向html选择元素添加选项
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 选项卡式元素上的动画CSS转换
- 只有当Angular从资源对象检索数据时,才选择选项元素
- Angular 指令似乎没有使用元素传入的选项执行
- 使用docment.createElement向元素添加选项
- Angular始终选择选择元素中的第一个选项
- 选择不追加在动态添加的行上的元素选项
- 动态更新 JavaScript 和 PHP 中的选择元素选项
- 创建一个 html 页面,其选择元素选项相同
- 获取所有选定元素选项的文本
- 使用jquery.on()方法处理同一元素(选项标记)的两个脚本之间的冲突
- jQuery:保存已选择的select元素选项
- 禁用基于类的选择元素选项
- 在页面加载时设置select元素选项
- 禁用Firefox中弹出的选择元素选项
- 在Bootstrap元素选项中使用引号中的引号