使用jquery创建的iframe在当前域的绝对URL前面加上前缀
iframe created with jquery prepends absolute URL with current domain
我正在使用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
)。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 如何在下面的ES6循环中获得前面的文本
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 如何在AngularJS URL中的hashtag(#)前面加上字符串
- 使用jquery创建的iframe在当前域的绝对URL前面加上前缀
- 为什么CDN's在URL前面有2 //而不是http或https ?
- 使用Javascript或PHP在URL前面添加字符串(子域)
- 主干:删除URL前面的散列
- $location.search在前面加上散列URL时为空