黑马程序员技术交流社区
标题:
使用iframe引入网页后,修改引入网页的内容
[打印本页]
作者:
hhuxiaolang
时间:
2016-3-20 12:48
标题:
使用iframe引入网页后,修改引入网页的内容
如题,使用iframe引入了外部网页,如何更改外部网页显示的内容
作者:
fanxiaolin
时间:
2016-3-28 17:26
这个框架不是要分成3个板块?至于显示内容,你说的是前端吧? 写html就行了,
作者:
宁跃
时间:
2016-3-28 23:39
这个框架不是要分成3个板块? 写html就行了,
作者:
guozhenxing
时间:
2016-3-30 22:28
还没学到这块,所以我只能来打酱油了
作者:
ImKing
时间:
2016-7-3 14:38
iframe标签只是引入作用,需要修改外部网页,找到外部网页使用前端工具,例如Dreamweaver等工具修改就行了啊,自定义你的代码不久行了吗? {:3_56:}
作者:
杨凯233
时间:
2016-9-13 16:36
亲,如果是html里面嵌套了iframe的话总共分为两种情况:
第一种是:父页面与子页面属与同一个域。例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<iframe id="children" src="../OrangeBus/01.html" ></iframe>
</body>
</html>
此时如果想获取01.html里面的元素应该是:
window.frames["
children
"].document.getElementById("元素id");
第二种是:父页面引入的子页面不属于同一个域
例如:
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<iframe id="children" src="
www.bb.com
" ></iframe>
</body>
</html>
其中 父页面的域名假如是:
www.aa.com 子页面域名:www.bb.com 。两者不属于同一个域名。
当两个域不同时,如果想相互调用,那么同样需要两个域都是由你来开发才可以。
用iframe可以实现数据的互相调用。解决方案就是用window.location对象的hash属性。hash属性就是http://domian/web/a.htm#dshakjdhsjka 里面的#dshakjdhsjka。利用JS改变hash值网页不会刷新,可以这样实现通过JS访问hash值来做到通信。不过除了IE之外其他大部分浏览器只要改变hash就会记录历史,你在前进和后退时就需要处理,非常麻烦。不过再做简单的处理时还是可以用的。大体的过程是页面a和页面b在不同域下,b通过iframe添加到a里,a通过JS修改iframe的hash值,b里面做一个监听(因为JS只能修改hash,数据是否改变只能由b自己来判断),检测到b的hash值被修改了,得到修改的值,经过处理返回a需要的值,再来修改a的hash值(这个地方要注意,如果a 本身是那种查询页面的话比如http://domian/web/a.aspx?id=3,在b中直接parent.window.location是无法取得数据的,同样报没有权限的错误,需要a把这个传过来,所以也比较麻烦),同样a里面也要做监听,如果hash变化的话就取得返回的数据,再做相应的处理。
总结:
第一种情况:域和子域的问题,可以完全解决交互。
第二种情况:跨域,实现过程非常麻烦,需要两个域开发者都能控制,适用于简单交互。
ps:对于域的理解,一般初学java的话,完全可以默认为一个项目就是一个域。
最后啰嗦一句:在现在的开发中,iframe可能会有用到,但是从技术的发展来看,这个属于要过时的技术啦~~
(第一次打这么多字===,希望能对你有帮助,如果有问题,可以私聊我哦~)
作者:
哦啊啊
时间:
2016-10-1 21:43
这个框架是String 类型
public static void main(String []agrs){
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2