问下IE下面怎么给IFRAME 的编辑框赋值

SHANDIANDIAN 2011-08-29 08:32:04
要兼容IE6,7,8的
iframe的结构,是
<iframe name="bbcode" id="bbcode" src="bbcode/bbcode.php" frameborder="0" marginheight="0" marginwidth="0" scrolling="No" style="width: 100%; height: 410px;"></iframe>

然后BBCODE页面下

<iframe id="contents" name="contents" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto"></iframe>

给contents 赋值
...全文
248 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2011-09-01
  • 打赏
  • 举报
回复
内嵌的BBCODE.PHP?
你把代码写这个页面里面,而不是外面
SHANDIANDIAN 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sharkdbj 的回复:]

引用 18 楼 shandiandian 的回复:

引用 17 楼 sharkdbj 的回复:
引用 9 楼 shandiandian 的回复:

会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.docu……
[/Quote]alert 不是弹窗口吗?能举个例子吗!怎么让他顺序执行?
SHANDIANDIAN 2011-08-31
  • 打赏
  • 举报
回复
谁给个解决方案???怎么让内嵌的BBCODE.PHP 页面加载完后,在执行
echo ("<script>window.onload = function(){corp('$str');}</script>");
咸鱼boris 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 shandiandian 的回复:]

引用 17 楼 sharkdbj 的回复:
引用 9 楼 shandiandian 的回复:

会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.document.designMode="on";


}
……
[/Quote]
我也不解了,昨天我也是用FF测的,结果返回为NULL,然后给加个alert强制其执行顺序就好了,难道FF版本问题?其实这个类似的问题先前也遇到过,楼上大神应该有印象,也是ifame的加载问题。反正我总觉得这个跟iframe的加载延迟有关,如果src响应慢点即时FF也会出问题。个人理解,仅供参考
咸鱼boris 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sharkdbj 的回复:]

引用 18 楼 shandiandian 的回复:

引用 17 楼 sharkdbj 的回复:
引用 9 楼 shandiandian 的回复:

会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.docu……
[/Quote]
你在js文件的第一行去设一个alert就可以了,这不是解决问题的办法
HeLiang7 2011-08-30
  • 打赏
  • 举报
回复
跨域iframe里面的DOM好像不能读取和更改。
SHANDIANDIAN 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 blue_lg 的回复:]

BBCODE页面?php?
[/Quote]顶下
SHANDIANDIAN 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sharkdbj 的回复:]
引用 9 楼 shandiandian 的回复:

会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.document.designMode="on";


}

楼主你说的对,就是你用了onload的问题……
[/Quote]

不过这个在FF下面没有问题的,就是在IE下面 会报对象为空
咸鱼boris 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shandiandian 的回复:]

会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.document.designMode="on";


}
[/Quote]
楼主你说的对,就是你用了onload的问题,你在页面加载的时候去取框架Iframe里的内容,然而iframe加载bbcode/bbcode.php这个页面会有个延迟,然后执行顺序就变成这样了:
onload执行---->iframe元素生成----->onload执行完---->iframe加载src中的页面
结果就是你取不到Iframe中src指定页面的document对象
我是新手,纯属个人理解,有不对的地方希望大神们纠正,楼主可参考
孟子E章 2011-08-30
  • 打赏
  • 举报
回复
'window.frames.contents.document' 为空或不是对象
那是因为你的iframe是空的,没有document对象的,。你这样写


<iframe src="b.htm" name="contents"

b.htm写
<html>
<body>
</body>
</html>

就可以了
孟子E章 2011-08-30
  • 打赏
  • 举报
回复
<iframe id="contents" name="contents" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto"></iframe>
<input type=button value="赋值" onclick="Add()" />
<script>
function Add()
{
window.frames["contents"].document.open();
window.frames["contents"].document.write("<body>赋值</body>")
window.frames["contents"].document.close();
}
</script>

SHANDIANDIAN 2011-08-30
  • 打赏
  • 举报
回复
期待完美答案
BLUE_LG 2011-08-29
  • 打赏
  • 举报
回复
BBCODE页面?php?
SHANDIANDIAN 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 blue_lg 的回复:]
document.frames( "bbcode ").document.frames( "content").document.body.innerText="";
[/Quote]

你的这个方式好像赋值也不行,不知道是不是页面装载没完成造成的,

'document.frames(...).document.frames(...).document.body' 为空或不是对象

报这个错误
SHANDIANDIAN 2011-08-29
  • 打赏
  • 举报
回复
会不会是window.onload 冲突

我BBCODE 页面下的JS 也有个

window.onload = function()
{
var f = window.frames["contents"];
f.document.designMode="on";


}
BLUE_LG 2011-08-29
  • 打赏
  • 举报
回复
document.frames( "bbcode ").document.frames( "content").document.body.innerText="";
SHANDIANDIAN 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 blue_lg 的回复:]
引用 4 楼 blue_lg 的回复:

document.getElementById( "bbcode ").contentWindow.document.body.innerText=“”;

不好意思,写错了
document.getElementById( "bbcode ").contentWindow.document.getElementById( "content").……
[/Quote]

你的这个方式只能在firefox下用,IE 8 下不行
SHANDIANDIAN 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jike316 的回复:]
把代码贴完全先
[/Quote]

jieshao.php

<?php include_once"ajax.php"; include_once"access_denied.php";?>
<link href="admin.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../include/js/admin.js"></script>
<script type="text/javascript" src="../include/js/ajax.js"></script>
<div id="admin_message">
<div id="admin_message_1">
<div id="admin_right_3_1">企业介绍 </div><br />
<iframe name="bbcode" id="bbcode" src="bbcode/bbcode.php" frameborder="0" marginheight="0" marginwidth="0" scrolling="No" style="width: 100%; height: 410px;"></iframe>
<input id="news" type="button" name="" onclick="jieshao_xx()" value="保存介绍" />
</div>
<?php
$corp = $mz_mysql->mysql_give("select * from mzrui_corp");
$str = str_replace("\n", "", $corp[corp]);
$str = str_replace("\r", "", $str);
echo ("<script>window.onload = function(){corp('$str');}</script>");
?>

JS

function corp(jieshao)
{
if (navigator.appName == 'Microsoft Internet Explorer')
{
document.getElementById( "bbcode").contentDocument.getElementById( "contents").contentDocument.body.innerHTML = jieshao;

}
else
{
document.getElementById( "bbcode").contentWindow.document.getElementById( "contents").contentWindow.document.body.innerHTML = jieshao;

}
}

然后BBCODE.PHP

就是这个 <iframe id="contents" name="contents" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto"></iframe>
BLUE_LG 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 blue_lg 的回复:]

document.getElementById( "bbcode ").contentWindow.document.body.innerText=“”;
[/Quote]
不好意思,写错了
document.getElementById( "bbcode ").contentWindow.document.getElementById( "content").contentWindow.document.body.innerText="";
加载更多回复(4)

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧