Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вставка скрипта через replaceChild 
:(
    Опции темы
beaver
Дата 1.7.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.7.2007

Репутация: нет
Всего: нет



есть такая вот страничка
HTML
<html>
<head>
<script>
function insertscript(){
    var target = document.getElementById("insert");
    var message = "<script src='http://domen.com/script.js'></script>";
    var messbody = document.createTextNode(message);
    target.replaceChild(messbody, target.childNodes[0]);
}
</script>
</head>
<body onload="insertscript">
<span id="insert">Wait plizzzzz...</span>
</body>
</html>

нужно вставить в определенный элемент страницы код, который бы вызвал скрипт с другой страницы и заставил его исполниться (в скрипте несколько команд типа document.write)
приведенная конструкция вставляет как текст и соответственно не выполняет.

как победить?

PS. вообще страничка формируеться из xml через xslt в браузере посетителя
PM MAIL   Вверх
vasac
Дата 1.7.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



1. Зачем вы создаете текстовый нод? Конечно он и будет отображаться текстом. О DOM вы, как видно, понятие имеете, так и создавайте элемент <script> с нужным SRC.
2. Почему это все равно работать не будет (вернее не так, как надо), можете почитать здесь — http://www.phpforum.ru/index.php?showtopic=2638 . Да не сочтут модераторы это за наглую рекламу. Используйте все тот же DOM, вместо document.write
PM WWW   Вверх
beaver
Дата 1.7.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.7.2007

Репутация: нет
Всего: нет



короче проблема в следующем, есть несколько файлов
index.xml
HTML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="index.xsl"?>
<doc>
    <title>tile page</title>
    <script>index.js</script>
</doc>
index.xsl
HTML
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="doc">
<html>
<body onload="newload()">
<h1><xsl:apply-templates select="title"/></h1>
<script src="{script}"></script>
<span id="insert"></span>
<script id="script" src=""></script>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
index.js
Код
function newload(){
    document.getElementById("insert").innerHTML = 'span insert';
    document.getElementById("script").src = 'script.js';
}
script.js
Код
document.write("<div style=\"border:1px solid red;\">1</div>");

открываю в браузере (ФФ 1.5 в моем случае), выделяю весь текст и смотрю исходный код выделенного фрагмента, вижу следующее
HTML
<html>
<body onload="newload()">
<h1>tile page</h1>
<script src="index.js"></script>
<span id="insert">span insert</span>
<script src="script.js" id="script"></script>
</body>
</html>
но в окне браузера единички в красной рамке не вижу, а очень хочеться  smile
и очень нужно
PM MAIL   Вверх
vasac
Дата 1.7.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



script.js:
Код

var edinichka = document.createElement("div");
edinichka.style.border = "1px solid red";
document.getElementById("insert").appendChild(edinichka);


index.js
Код

function newload() {
    var script = document.createElement("script");
    script.setAttribute("type", "text/javascript");
    script.setAttribute("src", "script.js");
    document.body.appendChild(script);
}


А еще лучше, сходите в поиск по запросу "ajax"
PM WWW   Вверх
beaver
Дата 1.7.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.7.2007

Репутация: нет
Всего: нет



если бы я мог менять script.js, то давно бы решил проблему. а так он мне недоступен для редактирования, а выводить его нужно, он вообще на другом домене и соответственно на другом сервере находиться
PM MAIL   Вверх
vasac
Дата 1.7.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Тогда либо грузить его аяксом и разбирать регулярками содержимое.
Либо создавать скрытый iframe, содержащий <script> со ссылкой на нужный файл и его разбирать.
Если несколько раз приходится получать данные, то можно сразу в html вставить:
Код

<iframe src="iframe.htm"></iframe>

iframe.htm:
Код

<script src="..script.js"></script>
<script>
window.parent.loadframe(document.getElementsByTagName("div").item(0).firstChild.nodeValue);
</script>


loadframe - обработчик загрузки фрейма, получает содержимое загруженного дива, которое вставляется уже куда надо.
С нужной периодичностью iframe нужно рефрешить.


PM WWW   Вверх
beaver
Дата 1.7.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.7.2007

Репутация: нет
Всего: нет



скрытый ифраме возможно тот вариант, ибо через xmlhttprequest с другого домена не выдерну  smile 

только там вообще не див грузиться, а формируеться таблица несколькими document.write, но думаю принципиального отличия не будет. единственное, как тогда отследить, закончилась загрузка в ифрейм или нет, ставить settimeout нет особого желания, есть другие способы
PM MAIL   Вверх
vasac
Дата 2.7.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата

единственное, как тогда отследить

Так у меня все отслеживается в примере
PM WWW   Вверх
beaver
Дата 3.7.2007, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.7.2007

Репутация: нет
Всего: нет



не совсем то, что хотелось бы.
сложность с src для iframe
указывать html файл с этого же сайта не могу (там хостер такой гадости навставляет), тянуть с другого не совсем хорошо.

остаеться только указать в качестве src адрес about:blank (сработает на любом браузере).
как теперь вписать туда тег скрипт (так, что бы он исполнился), отследить, когда он загрузиться и отработает, и после всего этого забрать из этого ифрейма получившуюся таблицу (а там сгенерируеться таблица) и вывести ее в основном документе.
 smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.