5
回答
When jQuery miss iframe is IE
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   


    好吧,请原谅我标题党了。
    但是请原谅,我遇到的问题就是这样子的,Parent页面里面有一个Child的iframe,两个页面里面都引用了jQuery,但是在第二个页面就会抛出异常(也就是说我在第二个页面不能够使用jQuery了),这仅仅只是在IE下才会这样,Chrome和Firefox都工作良好。先上代码和截图吧

    代码比较简单,已经精简过了的,体现出问题所在。

【Parent】

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Parent Page</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
	console.log("Hello World,Here is Parent");
</script>
</head>
<body>
	<h1>Parent Page</h1>
	<iframe src="Child.html" width="100%" height="90%" id="iframe"></iframe>
</body>
</html>



【Child】

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Children Page</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
	console.log("Hello World,Here is Child");
</script>
</head>
<body>
<h1>Child Page</h1>
</body>
</html>



    现在来说说我尝试过的解决方案吧,在百般找资料和尝试无果之后,我想大家的智慧肯定可以帮到我。t_t

  • Parent加载jQuery,Child不加载 no work
  • Parent加载jQuery,Child通过paren.$来获得,却是可以得到,但是操作的却是Parent的document。简单说就是,如果我在Child里面把所有p标签设置红色,Parent的所有p全部为红色,Child没有反应。我想这里可能是一个突破口。但是不知道怎么下手
  • Parent和Child加载不同版本的jQuery no work
  • Parent加载jQuery,Child使用动态添加script节点加载 no work
  • 对了,还试过jQuery的别名,试过noConflict方法,no work,而且这里一个是父页面一个是子页面,不会出现名字空间的冲突
  • 大概是这些,不知大家有没有什么想法,如果有兴趣可以试试~





举报
就是我啊
发帖于4年前 5回/612阅
共有5个答案 最后回答: 4年前

我觉得是 jQuery 1.10.1 的bug,Child 换成 jQuery 1.8.3 就ok了,Child 为  jQuery 1.10.1 时 parent 无 attachEvent 方法,但是有 addEventListener 方法 ,jQuery 1.10.1 应该在 IE 11 下 判断一下 :

if (parent.addEventListener) {
 window.addEventListener('xxx', xxx);
} else if (parent.attachEvent) {
 window.attachEvent('xxx', xxx);
}





--- 共有 5 条评论 ---
就是我啊最佳还是你的,这回当之足够了吧~~ 4年前 回复
就是我啊太帅了~~我怎么就没想过查源码呢,thank u thank u~ 4年前 回复
彭博在 runjs 上弄了个 1.8.3 的例子 : 你在 IE 11 上运行:http://sandbox.runjs.cn/show/1jpcg1uv 4年前 回复
彭博我顺便把最佳答案取消了,我可不能白拿你的最佳答案 呵呵 4年前 回复
彭博是不是可以去 jQuery 官网报个 bug ? 4年前 回复
都不懂你的标题....
--- 共有 2 条评论 ---
就是我啊关闭问题结贴吧还是 4年前 回复
就是我啊哈哈,我还以为自己比那些问题诸如“求大神啊,为什么我的jQuery提示未定义呀”然后内容就是大大的rt,负责多了呢,原来是我想多了。3ks,嗯,重新发了一篇 : ) 4年前 回复

@彭博 学你的也查看了一下源码,: )

    在jquery-1.10.0,完全没有考虑iframe的问题,之前的版本也一样,所以就不会报错

    jquery-1.10.1,考虑到了iframe,但是没有考虑IE11的问题,出现了bug

    在1.10.1之后的版本对attachEvent进行了判断,但是没有处理,jquery-1.11.0-beta3,进行了判断和修复    
==================================================

  看来得试着查看查看源码了...


--- 共有 1 条评论 ---
彭博Great job! 4年前 回复
顶部