使用jquery在IE中无法更改iframe的高度

时间:2012-03-30 09:38:22

标签: jquery cross-domain

我想做什么:

我想通过跨域从php页面中选择一个数字,然后使用jquery将其用作iframe上的高度。 page.php示例输出:195

这就是我所做的:

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

这在Chrome,firefox和safari中效果很好,但在IE 7/8中没有(我想你已经猜到了)(没有9)。有关于跨域协议的东西吗?我在我的php页面上使用它:

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

有谁知道为什么这在IE中不起作用?

2 个答案:

答案 0 :(得分:1)

检查data中是否有任何值或控制台中是否存在任何跨域错误。

如果一切顺利,请使用:

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

答案 1 :(得分: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>