2012-03-30 49 views
0

我想要做什麼:變化高度在IE無法正常工作

我想,通過跨域挑選從某個PHP頁面的號碼,然後使用jQuery使用此作爲高度上一個iframe。 page.php文件中的示例輸出:195

這是我做了什麼:

$(document).ready(function() { 
      $.get("http://domain.com/page.php", function(data){ 
       $('#Myiframe').attr("height", data + "px"); 
      }); 
     }); 

而這鉻的偉大工程,Firefox和Safari,但不是(我想你已經猜到了)在IE 7/8中(沒有9)。有關於跨域協議的內容嗎?我用我的PHP頁面:

header("Access-Control-Allow-Origin: *"); 
    header("Access-Control-Allow-Headers: x-requested-with"); 

有沒有人知道爲什麼這doesen't在IE中工作?

+1

我們有同樣的問題一年前,在這個時候IE的XDomainRequest WASN 「T支持jQuery的,也許它仍然不支持(不能告訴你)http://stackoverflow.com/questions/6318996/jquery-getjson-not-working-properly-in-ie8-with-gdata-json- c-why/6320496#6320496。但關於最後的評論(1個月前)我想它仍然不是。 – 2012-03-30 09:57:39

回答

1

檢查您是否得到data或任何值在控制檯中的任何跨域錯誤。

如果一切順利的偉大,然後使用:

$('#MyIframe').css('height', data + 'px'); 
0

一個不太優雅,但更堅固的解決方案是使用JSONP避免使用XMLHttpRequest的根本。

假設API調用是一個像num_votes(id)這樣的函數,您可以通過注入一個標籤來調用它,如<script src="http://example.com/jsonp.php?m=num_votes&id=123"></script>。然後

這個腳本的主體會叫你所選擇的功能。當你不得不使用一個全球性的回調函數,你應該建立一個回調註冊表,所以你的JSONP API將返回類似myCallbacks[$ID]({votes: 1234});

<script> 
    my_callbacks={}; 
    on_ready(
    qid = 'q'+Math.floor(Math.random()*(1<<16)); 
    tag = create_element('script') 
    tag.src = api_url + 'jsonp=my_callbacks.'+qid; 
    my_callbacks[qid] = function(o) { alert('votes: ' + o.votes); }; 
    body.append(tag); 
); 
</script>