как заставить выполнить 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, время: 09:26. |