iframe 跨越訪問 iframe跨域訪問

2021-10-17 05:48:36 字數 1007 閱讀 8317

js跨域是個討論很多的話題。iframe跨域訪問也被研究的很透了。

一般分兩種情況:

一、 是同主域下面,不同子域之間的跨域;

同主域,不同子域跨域,設定相同的document.domian就可以解決;

父頁訪問子頁,可以document.getelementbyid("myframe").contentwindow.document來訪問iframe頁面的內容;如果支援contentdocument也可以直接document.getelementbyid("myframe").contentdocument訪問子頁面內容;

子頁訪問父頁,可以parent.js全域性屬性

二、 是不同主域跨域;

前提,www.a.com下a.html,a.html內iframe呼叫了www.b.com下的b.html,b.html下iframe呼叫了www.a.com下的c.html

b.html是不無法直接訪問a.html的物件,因為涉及到跨域,但可以訪問parent,同樣c.html的parent可以訪問b.html。c.html和a.html同域,是可以訪問a下的物件的。parent.parent.js物件!

看下面例項:

a.html

無標題文件

functiondosome(text){

document.getelementbyid("gettext").innerhtml=decodeuri(text);

b.html

無標題文件

vartext =document.getelementbyid('ct').innerhtml;

document.getelementbyid('myfarme').src=""+encodeuri(text);

c.html

無標題文件

vartext =window.location.href.split('=')[1]

console.log(parent.parent)

parent.parent.dosome(text);

多層iframe訪問

注意 一 等iframe裡面的檔案載入完才可以訪問 二 contentdocument ie6 7不支援 所以採用了contentwindow.document。如果不相容這兩個可以用 document.getelementbyid myframe contentdocument.getelemen...

多層iframe訪問

注意 一 等iframe裡面的檔案載入完才可以訪問 二 contentdocument ie6 7不支援 所以採用了contentwindow.document。如果不相容這兩個可以用 document.getelementbyid myframe contentdocument.getelemen...

使用gulp外掛程式進行跨越訪問

在進行前端專案的開發中,如果要進行跨域訪問,而不想在本地配置nginx 時,可以使用gulp 的gulp connect 和gulp connect proxy 兩個外掛程式,完成本地的跨域訪問 var proxy require gulp connect proxy var connect req...