2011-05-04 33 views
6

我有一個iframe,我正在使用一個帶有一些變量的url創建,這些變量是作爲GET傳入的。是否可以設置源頁面並將變量作爲POST或其他東西傳入?或者真的,如果可以以某種方式獲取存儲在父級中的變量,那麼我也會很好。將值傳遞到iframe中,而不是使用GET

回答

5

從iframe中使用window.parent

在父窗口中:

window.passingObj = { "key" : "value" }; 

在iframe:

alert(window.parent.passingObj["key"]); // value 
0

如果您只需要javascript訪問,那麼您可以使用hash

iframe.src="http://foo.bar/#arg1=1&arg2=2"; 

然後在頁面中,您只需從location.hash.substring(1)中提取它們。

這是獲得這些ARGS成 '地圖' 樣板代碼:
(從我的圖書館easyXDM)

var query = (function(input){ 
    input = input.substring(1).split("&"); 
    var data = {}, pair, i = input.length; 
    while (i--) { 
     pair = input[i].split("="); 
     data[pair[0]] = decodeURIComponent(pair[1]); 
    } 
    return data; 
}(location.hash); 

query.arg1; // 1 
query.arg2; // 2 
0

如果兩個頁面位於同一個域中,可以訪問使用iframe在容器頁面中定義的變量

parent.varName 
0

可以使用變量和方法從簡單地使用對象iframe的父窗口;舉例來說,如果你有這樣的父窗口:

var someObject = {key1:'value1' , key2:'value2'}; 
function test(key) 
{ 
    alert(someObject[key]); 
} 

你可以在孩子的iframe這樣做:

parent.test('key1'); 
alert(parent.someObject.key2); 

請記住,如果iframe和其父屬於它是唯一可能同域 (同源策略)。

0

對於你所說的我收集你不想使用url來傳遞你的參數。

取決於執行的JavaScript這裏你有以下選擇:

  • 如果容器窗口中執行,你會做這樣的事情

    ... 
    var el = document.getElementById('targetFrameId'); 
    
    getIframeWindow(el).someFunction('value1', 'value2', ...); 
    // or 
    getIframeWindow(el).someVariable = {key1:'value1', key2:'value2', ...}; 
    ... 
    
  • 如果在iframe窗口中執行你會做這樣的事情

    ... window.parent.something ... ; 
    

附件

function getIframeWindow(iframe_object) { 
    var doc; 

    if (iframe_object.contentWindow) { 
    return iframe_object.contentWindow; 
    } 

    if (iframe_object.window) { 
    return iframe_object.window; 
    } 

    if (!doc && iframe_object.contentDocument) { 
    doc = iframe_object.contentDocument; 
    } 

    if (!doc && iframe_object.document) { 
    doc = iframe_object.document; 
    } 

    if (doc && doc.defaultView) { 
    return doc.defaultView; 
    } 

    if (doc && doc.parentWindow) { 
    return doc.parentWindow; 
    } 

    return undefined; 
} 
相關問題