Как написать тег сценария внутри кода javascript?

У меня есть код javascript, который вызывается внутри iframe. Я хочу добавить тег внутри этого кода javascript и добавить тег к родительскому телу iframes. Это мой код для добавления тега скрипта и добавления к родительскому телу iframes.

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

код не работает он ни добавил тег скрипта, ни показал ошибку

4 ответа

  1. Это может работать лучше, если вы создадите новый элемент скрипта и добавите его к родительскому элементу.

    См. эту запись для получения дополнительной информации: документ.createElement (‘script’) vs <script src=»»>

    Это пример, скопированный из принятого ответа в приведенной выше ссылке.

    var s = document.createElement('script');
    s.src = "...";
    document.getElementsByTagName("head")[0].appendChild(s);
    

    Свойство src-это URL-адрес, содержащий скрипт.

    Чтобы добавить содержимое скрипта в элемент непосредственно из строки, необходимо получить ответ из:
    Добавление элемента <script> в DOM и запуск javascript?

    Таким образом, ваш вопрос пример кода будет:

    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);
    }
    

    Также смотрите эту запись для получения более подробной информации о том, как прикрепить элемент скрипта: документ.глава, документ.тело для присоединения скриптов

  2. Ваш scriptTagявляется строкой, а не HTML-элементом, поэтому вы просто добавляете строку. Вы должны использовать document.createElement

    setTimeout(function () {
    var scriptTag = document.createElement('script');
         scriptTag.src = 'alert(1)'
         $("#iframe").contents().find("body").append(scriptTag);
    }, 5000);
    
  3. Спасибо ребятам за все ans, которые я придумал способ добавить тег и добавить его к родительскому телу iframe.

    setTimeout(function () {                     
                  var imported = document.createElement('script');
                  imported.src = 'src';
                 parent.document.body.append(imported);
           }, 5000);
    
  4. Это может помочь

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