目的:在in.html文件,可以实现点击按钮,加载doc.htm里的内容到div层中
in.html文件<script>
function func(){
var doc=window.frames["IFrame1"].document;
var inner = doc.body.innerHTML;
//alert("Inner:" + inner);
var divdoc = document.getElementById("show");
//setInnerHTML(divdoc,doc.body.innerHTML);
divdoc.innerHTML = doc.body.innerHTML;
}
</script><input type="button" name="ok" value="点击" onclick="func();">
<div id="show"></div>
<iframe name="IFrame1" src="doc.htm"/>这个是doc.htm<input name="in" value="`fdsafd" type="text"></input>结果:
在IE6下,点击按钮in.htm,没有反应
再Firefox3.0.11,点击按钮有反应,正常添加文本框。
已知,ie6的innerHTML显示的话,会将双引号去掉。firefox不会。
只有再input的value的开头含有重音符`,才会出现该问题,(中间或者末尾都不会出现)其他字符没有出现该情况。
请问该如何操作,使IE可以达到跟FIrefox一样的效果?
in.html文件<script>
function func(){
var doc=window.frames["IFrame1"].document;
var inner = doc.body.innerHTML;
//alert("Inner:" + inner);
var divdoc = document.getElementById("show");
//setInnerHTML(divdoc,doc.body.innerHTML);
divdoc.innerHTML = doc.body.innerHTML;
}
</script><input type="button" name="ok" value="点击" onclick="func();">
<div id="show"></div>
<iframe name="IFrame1" src="doc.htm"/>这个是doc.htm<input name="in" value="`fdsafd" type="text"></input>结果:
在IE6下,点击按钮in.htm,没有反应
再Firefox3.0.11,点击按钮有反应,正常添加文本框。
已知,ie6的innerHTML显示的话,会将双引号去掉。firefox不会。
只有再input的value的开头含有重音符`,才会出现该问题,(中间或者末尾都不会出现)其他字符没有出现该情况。
请问该如何操作,使IE可以达到跟FIrefox一样的效果?
function func(){
var doc=window.frames["IFrame1"].document;
var inner = doc.body.innerHTML;
//alert("Inner:" + inner);
var divdoc = document.getElementById("show");
//setInnerHTML(divdoc,doc.body.innerHTML);
divdoc.innerHTML = replace(doc.body.innerHTML);
}function replace(str){
return str.replace(/=([^\s>]+)(\s|>)/gi, "=\"$1\"$2")
}
doc = (doc.contentWindow || doc).document;
var doc=window.frames["IFrame1"];
doc = (doc.contentWindow || doc).document;
楼上请看清问题。
function replace(str){
return str.replace(/(<input [^(value)]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
}
<input value=some type=text size=30>是可以替换,起作用,
但是针对:
<input size=30 value=some>即调换了位置,类似却不可以。
能否将正则表达式不根据value的所在位置顺序进行匹配替换?
return str.replace(/(<input [^>]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
}再试试.我正则不是很好.
正则表达式的确很强大,当初解决的思路跟你是一样,但由于没有写过JavaScript的正则表达式,无法前进。
还好遇见你这样的牛人,帮我解决了。以后有正则表达式方面的问题,还望多请教,哈哈,结贴给分!