最近在iframe中注入脚本,发现jQuery .append()方法和DOM appendChild()方法的区别:
- DOM API appendChild()方法插入的 <script>会在iframe所在上下文中运行 </script>
- jQuery(2.2) .append()方法注入的 <script>脚本,其执行上下文总是在当前 window </script>
事实上,jQuery .append()方法对 <script>做了特殊处理: 获取脚本内容并通过 eval()在当前作用域下执行,同时禁用了浏览器默认的脚本调度执行。 </script>
先看例子
设置父容器的 window.id="parent",在注入到iframe的脚本中把它打印出来。 如果是与父容器共享上下文则会打印出 "parent",否则应是 undefined。
1 | window.id = 'parent' ; var idocument = $( 'iframe' ).prop( 'contentDocument' ); var injected_script = 'console.log("window.id ==", window.id)' ;
|
登入後複製
创建一个
作者最新文章
-
2025-02-26 03:58:14
-
2025-02-26 03:38:10
-
2025-02-26 03:17:10
-
2025-02-26 02:49:09
-
2025-02-26 01:08:13
-
2025-02-26 00:46:10
-
2025-02-25 23:42:08
-
2025-02-25 22:50:13
-
2025-02-25 21:54:11
-
2025-02-25 20:45:11
最新問題
-
2025-03-20 18:05:46
-
2025-03-20 18:05:09
-
2025-03-20 18:04:28
-
2025-03-20 18:02:57
-
2025-03-20 18:02:21