Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сослаться на линк из document.write ? (https://javascript.ru/forum/misc/2678-kak-soslatsya-na-link-iz-document-write.html)

Navsad 30.01.2009 18:29

Как сослаться на линк из document.write ?
 
Здравстуйте, подскажите плз!
На странице стоит скрипт вида:
<script language="JavaScript" src="http://domain.net/links/name.js"></script>
Он генерит на странице случайную ссылку.
Сам скрипт:
document.write("<font face=Times New Roman size=3 color=> </font><a href=http://domain.net/1234/index.html><font face=Times New Roman size=3 color=#FFCCFF>Текст ссылки</font></a>");

Как сделать iframe с адресом генерируемым этим скриптом?

ZoNT 30.01.2009 18:47

document.write('<iframe src="http://domain.net/1234/index.html"></iframe>');

Navsad 31.01.2009 04:51

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

x-yuri 31.01.2009 08:03

запускать скрипт в изначально невидимом iframe и корректировать его

Navsad 31.01.2009 08:05

А по подробнее, как это сделать то?

x-yuri 31.01.2009 08:19

есть еще вариант запускать скрипт в невидимом div'е и из полученного результата вытаскивать ссылку и потом создавать iframe - чтобы не создавать iframe непонятно куда указывающий или временно указывающий не туда

а по поводу вопроса - что именно не понятно?
как запустить скрипт -
<script language="JavaScript" src="http://domain.net/links/name.js"></script>

как получить доступ к ссылке -
node.getElementsByTagName('a')[0]

или что?

Navsad 31.01.2009 08:34

Блин, да я знаю как установить код, он уже стоит.
Так всетаки как конкретно связать iframe и node.getElementsByTagName('a')[0] ?

x-yuri 31.01.2009 08:46

ты хочешь готовый код? спроси что именно ты не знаешь как сделать ;-)

Цитата:

Так всетаки как конкретно связать iframe и node.getElementsByTagName('a')[0] ?
тебе нужно из ссылки вытащить url и использовать его при создании iframe

Navsad 31.01.2009 09:49

Да да, именно это и надо, пусть я выгляжу дураков в глаза опытных программистов, пофик, но я не знаю как это сделать:(

x-yuri 31.01.2009 09:55

ты не выглядишь дураком, просто не хочешь сам предпринять какие-либо действия
скажи, что именно ты не знаешь: как найти ссылку, как выяснить куда она ссылается, как удалить ссылку, как создать iframe, твой вариант?

Navsad 31.01.2009 10:07

:) Блин, да я просто совсем не программист, я электронщик. А хочу создать iframe c адресом герерируемым скриптом, то есть, не окошко в котором будет написан этот адрес, а окошко в котором будет документ с адресом из скрипта.

Navsad 31.01.2009 10:09

Я вот тут попробывал:
<script language="JavaScript" src="http://domain.net/links/name.js"></script>
<script language="JavaScript">
var html = ' ';
html += '<ifr' + 'ame';
html += 'scr=' + node.getElementsByTagName('a')[1];
html += ' width="468" height="60">';
html += '</ifr' + 'ame>';
document.write(html);
</script>

И оно не работает, ход мыслей хоть верный? Или может ошибка где?

x-yuri 31.01.2009 10:19

почему не заменить '<ifr' + 'ame' -> '<iframe' ?

Цитата:

<script language="JavaScript" src="http://domain.net/links/name.js"></script>
его лучше запихнуть в невидимый div (чтобы пользователь не увидел временно существующую ссылку)

Цитата:

node.getElementsByTagName('a')[1]
можно сразу document.getElements... если уверен, что индекс 1 не изменится
альтернитивный вариант - найти контейнер в котором находится ссылка (по id, getElementById) и в нем искать ссылку с помощью getElementsByTagName

p.s. лучше содержимое атрибута src поместить в двойные кавычки

Navsad 31.01.2009 10:24

Блин, чушь
ставлю такой код:
<script language="JavaScript">
var html = ' ';
html += '<iframe scr="http://www.google.ru/" width="468" height="300"></iframe>';
document.write(html);
</script>

А на стринице ни каких изменений..

x-yuri 31.01.2009 10:31

var iframe = document.createElement('iframe');
iframe.src = 'http://www.google.ru/index.html';
iframe.style.width = 468;
iframe.style.width = 300;
document.getElementsByTagName('body')[0].appendChild( iframe );

Navsad 31.01.2009 10:42

Так, iframe заработал, спасибо.
А теперь если не трудно, напешите код, чтоб вместо http://www.google.ru/index.html
подставлятось
http://domain.net/1234/index.html
которая генерится скриптом
<script language="JavaScript" src="http://domain.net/links/name.js"></script>

x-yuri 31.01.2009 10:45

твой вариант ;-)

Navsad 31.01.2009 10:49

:)
Ну тогда приступим.
Я так понял, что в строке node.getElementsByTagName('a')[0], 0 - это номер ссылки по порядку, верно или нет?

Предположим, что да, тогда может такой вариант?
<script language="JavaScript" src="http://domain.net/links/name.js"></script>
<script language="JavaScript">
var iframe = document.createElement('iframe');
iframe.src = node.getElementsByTagName('a')[1];
iframe.style.width = 468;
iframe.style.width = 300;
document.getElementsByTagName('body')[0].appendChild( iframe );
</script>
?

x-yuri 31.01.2009 10:53

Цитата:

Сообщение от Navsad (Сообщение 11699)
:)
Ну тогда приступим.
Я так понял, что в строке node.getElementsByTagName('a')[0], 0 - это номер ссылки по порядку, верно или нет?

да

Цитата:

Предположим, что да, тогда может такой вариант?
<script language="JavaScript" src="http://domain.net/links/name.js"></script>
<script language="JavaScript">
var iframe = document.createElement('iframe');
iframe.src = node.getElementsByTagName('a')[1];
iframe.style.width = 468;
iframe.style.width = 300;
document.getElementsByTagName('body')[0].appendChild( iframe );
</script>
?
где переменной node присваивается значение и что, как ты думаешь там должно быть?

Navsad 31.01.2009 10:54

http://domain.net/links/name.js вот это что ли?

x-yuri 31.01.2009 10:59

почитай для начала http://javascript.ru/start/dom

Navsad 31.01.2009 11:05

Блин, да если бы было время я почитал конечно, а так работа, с этим совсем не связана, да пахать приходится много, сейчас вот на работе и завтра придется тоже выходить. Может подскажешь?:)

Navsad 31.01.2009 11:09

может href надо вписать?

x-yuri 31.01.2009 11:18

засунь "<script language="JavaScript" src="http://domain.net/links/name.js"></script>" в div, назначь ему id, найди div по id (getElementById), найди в нем ссылку (getElementByTagName), из ссылки достань href
после этого можно удалить div (removeChild)

Navsad 31.01.2009 11:25

Так правильно?
<div id="d1">
<script language="JavaScript" src="http://domain.net/links/name.js"></script>
</div>
<script language="JavaScript">
var div = document.getElementById('d1')
var iframe = document.createElement('iframe');
iframe.src = div.getElementsByTagName('a')[0];
iframe.style.width = 468;
iframe.style.width = 300;
document.getElementsByTagName('body')[0].appendChild( iframe );
</script>

Navsad 31.01.2009 11:26

Во блин, вроде заработало:)

Navsad 31.01.2009 11:28

Только куда removeChild вставить?

x-yuri 31.01.2009 11:30

лучше заменить language="Javascript" -> type="text/javascript"

в принципе можно вместо document.getElementsByTagName('body')[0] писать document.body (хоть в стандартах это не описано, но браузерами поддерживается)

removeChild нужно вызывать так:
<контейнер>.removeChild(<то что ты хочешь удалить в контейнере>)

Navsad 31.01.2009 11:34

Ясно, большое спасибо!!!!

Андрей Параничев 31.01.2009 15:44

Navsad,
На будущее, пожалуйста пользуйтесь bb-тегами [‬js] или [‬html] для оформления листингов кода в теле сообщения.


Часовой пояс GMT +3, время: 03:56.