怎么样把左边框架中的源代码完整赋值给右边框架的一个文本框?要求IE/FF/Opera可以运行。

怎么样把左边框架中的源代码完整赋值给右边框架的一个文本框?要求IE/FF/Opera可以运行。 [已结贴,结贴人:laosan]

加为好友
发送私信
在线聊天
laosan
老三
等级:
可用分等级:乞丐
总技术专家分:1233
总技术专家分排名:16345
揭帖率:89.60%

发表于:2008-01-09 16:13:42 楼主
怎么样把左边框架中的源代码完整赋值给右边框架的一个文本框?要求IE/FF/Opera可以运行。


问题点数:300 回复次数:22 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复


----------------------------
muxrwc
潜水修行。。。
怎么样把左边框架中的源代码完整赋值给右边框架的一个文本框?


这个,用document.body.innerHTML
会丢失值的..
并且一些body之外的函数也不可以...

如果非要这样的话就用XMLHTTP||XMLHTTPRequest


xuStanly
依依MyLove
关注+帮顶
XMLHttpRequest也有编码和跨域的问题。

rjzou2006
骑士
编码和跨域
xmlhttprequest

可以实现


muxrwc
潜水修行。。。

发表于:2008-01-09 17:46:154楼 得分:15
framest
还涉及跨域?
O_O




xiaolei1982
小磊--如果没有你,我在哪里又有什么可惜,反正一切来不及,反正没有了自已...
除去之外的,document.body.outerHTML不会丢失值吧


netWild
网无忌

IE6,Firefox2下测试通过,手边没有Opera,未测试
-------------------
default.htm
+展开
-HTML
<script language="javascript">
function cloneCode(){
    frm2.document.getElementById("txt").value = (typeof(HTMLElement) != "undefined"?
        frm1.document.createElement("DIV").appendChild(frm1.document.documentElement.cloneNode(true)).parentNode.innerHTML
        :
        frm1.document.documentElement.outerHTML
    )
}
</script> 

<div><input type="button" value="LeftFrame's code To RightFrame's TextArea" onclick="cloneCode()" /></div>
<div style="float:left">
    <iframe id="frm1" name="frm1" style="width:400px;height:400px" src="left.htm"></iframe>
</div>
<div style="float:left">
    <iframe id="frm2" name="frm2" style="width:400px;height:400px" src="right.htm"></iframe>
</div>



left.htm

+展开
-HTML
<!!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>网页标题</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script language="javascript">
    function hello(){
        alert('Hello!');
    }
    </script> 
</head>
<body>
LeftFrame
</body>
</html>




right.htm

+展开
-HTML
<!!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>网页标题</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
RightFrame<br ><br >
<textarea id="txt" name="txt" style="width:360px;height:300px">code...</textarea>
</body>
</html>




xuStanly
依依MyLove
假如
<iframe id="frm1" name="frm1" style="width:400px;height:400px" src="left.htm"> </iframe>
这里指向的不是left.htm,而是一个其他网站的页面呢?

rjzou2006
骑士
还是有跨域的问题呢.

修改 删除 举报 引用 回复

dh20156
风之石

xuStanly
依依MyLove
假如
<iframe id="frm1" name="frm1" style="width:400px;height:400px" src="left.htm"> </iframe>
这里指向的不是left.htm,而是一个其他网站的页面呢?

这样是不行的,你可以通过服务端XMLHTTP先获取目标页,然后才好操作!


netWild
如果有跨域的情况,那只能用XMLHttpRequest了。

至于兼容IE和FF,可以参考prototype

PS:好像楼主没提有跨域的情况

mady55


parent.frames["right"].document.getElementById("Text1").value = parent.frames[left].toString()
你可以试试


mady55
小马哥

parent.frames["right"].document.getElementById("Text1").value = parent.frames["right"].document.documentElement.outerHTML

上面的错了,刚才试了一下,这样可以


xuStanly
依依MyLove
看来必须借助服务器端做代理,解决跨域和编码的问题。



laosan
我使用XMLHTTP解决了把左边的代码“完整”(完整,比较重要),outerHTML 的不完整。
但是所有的文件编码都设置为gb2312的时候,返回值都是乱码。


在FF加上
XMLHttpRequest.overrideMimeType("text/html;charset=gb2312");
可以解决


在IE里还是无法解决。


说明,我没有使用到服务器,就是几个html文件的本地执行。


mufengwsp2004
可可西里
XMLHttpRequest

用这个东西要注意编码的转换 会出现乱码

+展开
-VBScript
Function BytesToBstr(body)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312" 
'转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码
BytesToBstr = objstream.ReadText 
objstream.Close
set objstream = nothing
End Function




laosan

楼上的兄弟,不行啊。

错误:缺少对象‘server’



laosan
我的需求就是6楼的东西。
+展开
-JavaScript
function cloneCode(){ 
    frm2.document.getElementById("txt").value = (typeof(HTMLElement) != "undefined"
        frm1.document.createElement("DIV").appendChild(frm1.document.documentElement.cloneNode(true)).parentNode.innerHTML 
        : 
        frm1.document.documentElement.outerHTML 
    ) 

只是这个代码不符合要求。
frm1.document.documentElement.outerHTML
返回的代码是不完整的。

所以采用XMLHttpRequest解决了要求,但是在IE中显示为乱码,查了一些乱码的处理办法,还是没有解决。

nicholsky
发表于:2008-01-11 14:12:2921楼 得分:15
outerHTML是会自动格式化内容,又或者把16楼的改成客户端的JS代码应该也行,但有个安全设置提示,其实XMLHTTP是最好的选择了,编码是比较麻烦的问题,以前也因为这原因后来把页面全部编码改成统一。

加支付宝好友偷能量挖...


评论(0)网络
阅读(78)喜欢(1)JavaScript/Ajax开发技巧