我正在使用jQuery创建一个iframe到“跨站点”URL。这在Firefox中正常工作,但IE正在将父页面域添加到iframes src URL。
一个例子是如果我正在创建iframe(使用jQuery):
<iframe src="http://www.google.com"></iframe>
IE尝试加载的页面是:
http://www._mysite_.com/http://www.google.com
如果我在HTML中静态创建iframe一切正常。只有当我使用JS创建它才会加载错误的页面。
我想我会理解这是否是IE内置的故意跨站点保护,但我想知道是否是这种情况,或者我是否遗漏了某些内容。
这是IE的默认行为吗?如果有人有解决方法,将不胜感激。
编辑:
生成的代码是:
<iframe id="myIframe" width="500" height="400" frameborder="0" src="http://www._website_.com/aaa/bbb/ccc">
我在静态HTML上测试了生成的代码,它在IE中运行正常。
编辑2:
这就是我创建iframe的方式:
jQuery('.signUp').live('click', function() {
var url = 'http://www._website_.com'+$(this).attr('href');
var thisModal='<div id="dialogRes" class="windowG"><iframe id="iframeG" frameborder="0" width="500" height="400" src="#"></iframe></div>';
jQuery('body').append(thisModal);
jQuery('#iframeG').prop('src', url);
return false;
});
在这一行:
jQuery('#iframeG').prop('src', url);
我已尝试attr()
并将其全部删除,只需将url
放入iframe的src
标记即可。似乎没什么用。
答案 0 :(得分:1)
问题是在IE中,href
属性始终作为绝对URL返回。所以,如果你有
<a id="demo" href="bar/baz">...</a>
然后你的网站http://mydomain.com/foo:
jQuery('#demo').attr('href') == 'http://mydomain.com/foo/bar/baz';
解决此问题的两个选项是从href
属性解析(可能的)完整域,或者使用不同的自定义属性来保存目标地址/路径(例如{{1} })。