使用jquery创建的iframe在当前域的绝对URL前面加上前缀

iframe created with jquery prepends absolute URL with current domain

本文关键字:URL 前面 前缀 创建 jquery iframe 使用      更新时间:2023-09-26

我正在使用jQuery创建一个"跨站点"URL的iframe。这在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标签中。似乎什么都不起作用。

问题是在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属性中解析出(可能的)完整域,或者使用不同的自定义属性来保存目标地址/路径(例如data-href)。