如何在javascript代码中编写脚本标记?

时间:2017-01-13 07:17:01

标签: javascript jquery html iframe

我有一个在iframe中调用的javascript代码。我想在javascript代码中添加一个标记,并将标记附加到iframes父体。这是我添加脚本标记并附加到iframes父体的代码。

setTimeout(function () {
         var scriptTag = "<script>alert(1)<";
         scriptTag +=  "/script>";
         $("#iframe").contents().find("body").append(scriptTag);
    }, 5000);

代码无效,既没有添加脚本标记也没有显示任何错误

4 个答案:

答案 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);