как заставить выполнить javascript-код, сгенерированный после загрузки страницы?
есть простой html-код:
<div id="player"> <script>....</script> </div>если страница статичная, то вопросов нет. по ходу загрузки страницы исполняется javascript и внутри тега <div id="player"> формируется плеер. Но как быть, если элемент <div id="player"> добавляется на страницу динамически уже после её загрузки? 1. пробовал такой код: var newDiv = document.createElement("div"); newDiv.id = "player"; newDiv.innerHTML = "<script>...</script>"; document.body.appendChild(newDiv);но он не дает нужного результата. новый элемент <div> добавляется, но javascript внутри него не выполняется. 2. пробовал вместо <div> использовать <iframe> и затем загрузить в него javascript как новое окно: var newiframe = document.createElement("iframe"); newiframe.name = "player"; document.body.appendChild(newiframe); var newWindow=window.open('', 'player'); newWindow.document.write("<script>...</script>");тоже нифига не выходит. в iframe ничего не отображается. |
Самый простой вариант вынести скрипт во внешний файл.
<div id="player"> <script src="ссылка на скрипт"></script> </div> |
Magneto,
этот вариант не подходит. html-страница формируется на основе внешнего XML-документа, который находится на том же сервере. код плеера (в виде javascript) также храниться в XML как текстовый узел. его нужно просто вытащить оттуда, вставить в html и каким-то образом выполнить. |
может быть это подойдет http://api.jquery.com/jQuery.getScript/
или это http://api.jquery.com/load/ ? |
Вместо
newDiv.innerHTML = "<script>...</script>"; попробуй что-то тип того: newDiv.onclick = function() { бла...бла...бла... } событие конечно для примера, может и с innerHTML будет тебе счастье |
вот, как мне удалось разрешить поставленную задачу:
function embedplayer (playerCodeAsText) { document.getElementById("wrapper").innerHTML = "<iframe name='iframeplayer'></iframe>"; var newWindow = window.open("", "iframeplayer"); newWindow.document.write(playerCodeAsText); } var wrapperDiv = document.createElement("div"); wrapperDiv.id = "wrapper"; document.body.appendChild(wrapperDiv); var codeAsText = "<script>" + какие-то манипуляции с содержимым кода + "</script>" window.addEventListener("load", function () {embedplayer(codeAsTExt);}, false); фишка была в том, чтобы повесить функцию загрузки динамически создаваемого плеера в iframe на какое-нибудь событие (в моем случае после загрузки основного окна). |
Правильно иметь на странице статический плеер и ему просто передавать нужные параметры.
|
Часовой пояс GMT +3, время: 17:45. |