document.body.innerHTML的跨浏览器替代方案
Cross browser alternative to document.body.innerHTML
给定一个输入元素。。。
<input type="text" />
这个javascript。。。
var x = document.body.innerHTML;
用户输入一个值,比如"myValue",并将x设置为
IE将设置x=
<input type="text" value="myValue" />
而Chrome将设置x=
<input type="text" />
那么,除了document.body.innerHTML,还有什么跨浏览器的替代方案吗?
Chrome应该支持它-http://www.quirksmode.org/dom/w3c_html.html-你确定你使用的是最新的版本吗?
这看起来像是跨浏览器工作的。javascript函数可以做到这一点…
- 使用用户输入的值设置每个表单输入/select/text区域的值/selected.html属性
- 创建一个名为"formContent"的新输入元素
- 将"formContent"的值设置为表单元素的编码值(包括用户输入的值)
- 将"formContent"元素添加到表单
- 将包含用户输入值的表单提交到
这是我的例子的来源…
<html>
<head>
<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
function submitFormWithValues() {
$('form input').each(function() {
this.setAttribute('value', this.value);
if (this.checked)
this.setAttribute('checked', 'checked');
else
this.removeAttribute('checked');
});
$('form select').each(function() {
var index = this.selectedIndex;
var i = 0;
$(this).children('option').each(function() {
if (i++ != index)
this.removeAttribute('selected');
else
this.setAttribute('selected', 'selected');
});
});
$('form textarea').each(function() {
$(this).html($(this).val());
});
alert(encodeURI($("form").html()));
var myInput = document.createElement("input");
myInput.type = "text";
myInput.setAttribute("name", "myInput");
myInput.setAttribute("value",encodeURI($("form").html()));
var myForm = document.getElementById("form1");
myForm.appendChild(myInput);
myForm.submit;
}
</script>
</head>
<body id="body">
<form id="form1" action="test.aspx" method="post">
<input type="text" id="input1" /><br />
<input type="text" id="input2" /><br />
<input type="submit" onclick="this.style.visibility='hidden', submitFormWithValues()" id="submit" value=" Submit " />
</form></body></html>
当页面提交时,表单将类似于此…
<form id="form1" action="test.aspx" method="post">
<input type="text" id="input1" /><br />
<input type="text" id="input2" /><br />
<input type="text" name="formContent" value=" %3CINPUT%20id=input1%20value=%22first%20value%22%20jQuery1385425785747=%222%22%3E%3CBR%3E%3CINPUT%20id=input2%20value=%22second%20value%22%20jQuery1385425785747=%223%22%3E%3CBR%3E%3CINPUT%20style=%22VISIBILITY:%20hidden%22%20id=submit%20onclick=%22this.style.visibility='hidden',%20submitFormContent()%22%20value=%22%20Submit%20%22%20type=submit%20jQuery1385425785747=%224%22%3E%20" />
</form>
接收页面(下面的C#示例)通过解码formContent的值来重建HTML表单元素。
using System;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Server.UrlDecode(Request.Form.Get("formcontent")));
}
}
接收页面将输出原始表单元素,包括用户输入的值。通过这种方式,表单和输入的任何值都可以独立于浏览器功能从一个页面传递到另一个页面。
相关文章:
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 是否有用于CSS浏览器支持新功能的javascript解决方案
- 是否有跨浏览器的解决方案可以在客户端上创建目录
- html keygen替代方案,在浏览器中生成密钥对
- document.body.innerHTML的跨浏览器替代方案
- 关闭浏览器时使用 ajax 执行查询的解决方案
- Base64太大,无法在浏览器中打开,任何替代方案
- 什么是在javascript中检测操作系统,浏览器和版本号的广泛解决方案
- 在不刷新的情况下更改页面 URL - 是否有跨浏览器解决方案
- 寻找跨浏览器解决方案来突出显示选项卡
- 用于禁用/启用滚动的跨浏览器解决方案
- __proto__弃用.什么是快速和跨浏览器的替代方案
- 用于替换 event.layerX 和 event.layerY 使用的跨浏览器解决方案
- 是否有跨浏览器的解决方案来监控document.activeElement何时更改
- css悬停大小转换效果需要跨浏览器/回退解决方案
- 我是应该将移动浏览器虚拟视口视为系统性错误,还是有有效的解决方案
- 如何制作<输入类型=“;日期“>所有浏览器都支持吗?任何替代方案
- parent.navigate只在IE中工作.我有什么替代方案可以让它与其他浏览器一起工作
- 加载多个图像时用于回调的跨浏览器解决方案
- 浏览器中cookie存储的编码方案