我有一个在iframe中调用的javascript代码。我想在javascript代码中添加一个标记,并将标记附加到iframes父体。这是我添加脚本标记并附加到iframes父体的代码。
setTimeout(function () {
var scriptTag = "<script>alert(1)<";
scriptTag += "/script>";
$("#iframe").contents().find("body").append(scriptTag);
}, 5000);
代码无效,既没有添加脚本标记也没有显示任何错误
答案 0 :(得分:0)
如果您创建一个新的脚本元素并将其添加到父元素,它可能会更好。
有关详情,请参阅此帖子:document.createElement('script') vs <script src="">
这是从上述链接中接受的答案复制的示例。
var s = document.createElement('script');
s.src = "...";
document.getElementsByTagName("head")[0].appendChild(s);
src属性是包含脚本的URL。
要直接从字符串向元素添加脚本内容,您需要以下答案: Adding <script> element to the DOM and have the javascript run?
所以你的问题示例代码是:
var scriptTag = document.createElement('script');
scriptTag.type = 'text/javascript';
var code = 'alert(1);';
try {
scriptTag.appendChild(document.createTextNode(code));
$("#iframe").contents().find("body").appendChild(scriptTag);
} catch (e) {
scriptTag.text = code;
$("#iframe").contents().find("body").appendChild(scriptTag);
}
另请参阅此帖子,了解有关如何附加脚本元素的更多详细信息:document.head, document.body to attach scripts
答案 1 :(得分:0)
您的scriptTag
是字符串而不是HTML元素,因此您只需附加字符串。您必须使用document.createElement
setTimeout(function () {
var scriptTag = document.createElement('script');
scriptTag.src = 'alert(1)'
$("#iframe").contents().find("body").append(scriptTag);
}, 5000);
答案 2 :(得分:0)
非常感谢所有人,我确实找到了一种方法来添加标签并将其附加到iframe的父体。
setTimeout(function () {
var imported = document.createElement('script');
imported.src = 'src';
parent.document.body.append(imported);
}, 5000);
答案 3 :(得分:0)
这可能会有所帮助
setTimeout(function () {
var scriptTag = "<script>alert(1)</" + "script>";
$("#iframe").contents().find("body").append(scriptTag);
}, 5000);