javascript - 如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?

标签 javascript jquery html css iframe

我想使用 jQuery 将 JavaScript 片段添加到页面中的现有 iFrame 中。我有以下代码...

代码:

content = "<script>" + js_code + "</script>";

$('#iframe_id').contents().find('body').append(content);

但不知何故,这是行不通的。我检查了一些现有/相关的答案,似乎 jQuery 并没有完全将脚本标签识别为...脚本标签。 iFrame 在同一域/同一端口/同一主机中,因此不存在跨站点脚本等问题。我该如何解决这个问题?

最佳答案

问题是,如果您的脚本中包含关闭脚本标记 ( </script> ),HTML 解析器会感到困惑,并且它会过早地关闭脚本标记。

解决方案是逃避/"<\/script>" .这是有效的,因为 JavaScript(和其他一些语言)中的字符串,任何无效的 escape sequences只是被忽略了,所以 "\l"被视为 "l" , 和 "\/"被视为 "/" .然而,HTML 解析器不使用反斜杠来转义它们,因此不会混淆(归功于 https://stackoverflow.com/users/405681/keaukraine )。

var scriptTag = "<script>alert(1)<\/script>";
$("#iframe").contents().find("body").append(scriptTag);

原始解决方案

拆分结束标记,这样您就不会搞乱 HTML 解析器。此页面上的其他解决方案有效,因为它们从来没有字符串 </script>在他们的代码中(jsfiddle):

var scriptTag = "<script>alert(1)<";
scriptTag +=  "/script>";
console.log(scriptTag);
$("#iframe").contents().find("body").append(scriptTag);

或者 ( jsfiddle ):

var scriptTag = "<script>alert(1)<"+"/script>";
$("#iframe").contents().find("body").append(scriptTag);

关于javascript - 如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369410/

相关文章:

javascript - 谷歌地图不应用样式

javascript - 在下一行中插入新磁贴

javascript - 为什么 prototype.js 会干扰不相关的 javascript 操作?

javascript - 将缩小的javascript直接放入HTML中的脚本标签中

javascript - Firefox 中的 NS_ERROR_FAILURE 在隐藏的 iframe 中设置 Canvas 字体

javascript - HTML 页面自动重新加载

javascript - Javascript中的Node接口(interface)是一个对象吗?

javascript - 使用 document.write 显示 window.location.search 是否不安全/易受 xss 攻击?

jquery - 显示/隐藏 jQuery 脚本无法正确切换元素

html - 底部 :0 not working when overflow-y appear