Как я могу добавить новый элемент в JavaScript? - PullRequest
2 голосов
/ 17 апреля 2009

Я создал скрипт JavaScript, который можно вставить на чужую страницу для создания iFrame. Я хотел бы, чтобы человек мог вставить сценарий туда, где он хотел бы видеть iFrame.

Однако я не могу понять, как добавить созданный DOM iFrame к месту, где был вставлен скрипт. Он всегда добавляет его к самой нижней части тела.

Как мне добавить на место?

Ответы [ 3 ]

11 голосов
/ 17 апреля 2009

Мм. Вы могли бы сделать:

document.write("<div id='iframecontainer'></div>");
document.getElementById('iframecontainer').innerHTML = '...';

Но это выглядит ужасно / неправильно на многих разных уровнях. Я не знаю ни о каких других альтернативах.

РЕДАКТИРОВАТЬ : На самом деле, быстрый поиск в Google показал этот artlcle , в котором объясняется, почему document.write ужасен и хорошая альтернатива для конкретного рассола: 1013 * пометить ID!

<script id="iframeinserter" src=".."></script>

И тогда вы можете получить ссылку на тег script и вставить перед ним iframe:

var newcontent = document.createElement('iframe'); 
var scr = document.getElementById('iframeinserter'); 
scr.parentNode.insertBefore(newcontent, scr); 
2 голосов
/ 18 апреля 2009

Ответ Пауло также может быть сделан без идентификатора, просто ища последний элемент . Это должен быть блок скрипта, в котором мы находимся, потому что JavaScript гарантирует, что весь контент после закрывающего тега текущего блока скрипта еще не проанализирован (*):

 var scripts= document.getElementsByTagName('script');
 var script= scripts[scripts.length-1];
 script.parentNode.insertBefore(d, script);

Это может быть помещено в функцию onload / ready, если хотите, но если это так, 'var script' должен быть вычислен во время включения, а не в функции ready (когда это выполняется, больше s будет иметь был разобран).

(*: за исключением случая .)

1 голос
/ 17 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...