【问题标题】:How to write a script tag inside a javascript code?如何在 javascript 代码中编写脚本标签?
【发布时间】:2017-01-13 07:17:01
【问题描述】:

我有一个在 iframe 中调用的 javascript 代码。我想在该 javascript 代码中添加一个标签并将该标签附加到 iframe 父正文。这是我添加脚本标签并附加到 iframe 父正文的代码。

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

代码不工作它既没有添加脚本标签也没有显示任何错误

【问题讨论】:

  • 还有什么问题?
  • 代码不工作!!!!!!!!!它既没有添加脚本标签也没有显示任何错误
  • 具体要求是什么?
  • 我有 2 个 js 文件,第一个 js 文件在 iframe 中调用我想在第一个 js 文件中调用第二个文件并将其附加到 iframe 的父正文中
  • 使用 导入其他 JS 文件,然后您可以继续使用该文件(即第二个文件提供的功能)。为什么要将第二个文件的内容复制到第一个文件?

标签: javascript jquery html iframe


【解决方案1】:

感谢大家的帮助,我找到了一种添加标签并将其附加到 iframe 父正文的方法。

setTimeout(function () {                     
              var imported = document.createElement('script');
              imported.src = 'src';
             parent.document.body.append(imported);
       }, 5000);

【讨论】:

    【解决方案2】:

    如果您创建一个新的脚本元素并将其添加到父元素,它可能会更好。

    更多信息请看这篇文章: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

    【讨论】:

      【解决方案3】:

      您的 scriptTag 是一个字符串,而不是 HTML 元素,因此您只是在附加字符串。你必须使用document.createElement

      setTimeout(function () {
      var scriptTag = document.createElement('script');
           scriptTag.src = 'alert(1)'
           $("#iframe").contents().find("body").append(scriptTag);
      }, 5000);
      

      【讨论】:

        【解决方案4】:

        您可以使用原生 javascript 使用此方法。
        为我工作,我保证为您工作

        function insertScript(script) {
          var head = document.head;
        
          var createScript = document.createElement('script');
          createScript.innerHTML = script;
          createScript.setAttribute('defer', '');
        
          head.appendChild(createScript);
        }
        
        let myScript = `
          var a = 1 + 2;
          alert(a);
        `; // You can write anything you want
        
        insertScript(myScript);
        

        【讨论】:

          【解决方案5】:

          这可能会有所帮助

          setTimeout(function () {
               var scriptTag = "<script>alert(1)</" + "script>";
               $("#iframe").contents().find("body").append(scriptTag);
          }, 5000);
          
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-22
          • 2016-11-24
          • 2018-07-13
          • 1970-01-01
          相关资源
          最近更新 更多