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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вытащить значение переменной из чужого скрипта 
:(
    Опции темы
vpokorp
Дата 26.8.2008, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Чужой скрипт вызывается с помощью



Код

<script type="text/javascript"><!--
document.write('<sc'+'ript type="text/javascript" src="http://sait.ru/scr.js?"></sc'+'ript>');
//--></script>


Можно ли оттуда вытащить значение переменной? Если да то как?

И заодно вопрос - в чем еще разница между таким вызовом скрипта и простым

Код

<script type="text/javascript" src="http://sait.ru/scr.js?"></script>


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

и зачем в первом варианте делается sc'+'ript  вместо script 










PM   Вверх
Ghirik
Дата 26.8.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Конечно можно, просто добавьте ваш код:

Код

<script type="text/javascript"><!--
document.write('<sc'+'ript type="text/javascript" src="http://sait.ru/scr.js?"></sc'+'ript>');
alert(имя вашей переменной);
//--></script>


Такое подключение выедет результат работы скрипта очистив экран.

</script> делится на две части, чтобы интерпретатор не воспринял его, как закрывающий тэг выводящего блока <script type="text/javascript"><!-- //--></script>.

Код

<script type="text/javascript" src="http://sait.ru/scr.js?"></script>


В этом случае экран не будет очищен, но работоспособность подключаемого скрипта может сохранится, если не возникнет конфликтов.

Очистить экран можно написав document.body.innerHTML = '';




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
vpokorp
Дата 26.8.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



у меня получается в первом случае 

Код

<script language="javascript">
document.write('<sc'+'ript type="text/javascript" src="scr.js"></sc'+'ript>');
alert(a);
</script>


ошибка (выдает отсутствие переменной a)

а во втором случае 
Код

<script type="text/javascript" src="scr.js"></script>

<script language="javascript">
alert(a);
</script>

все нормально

сам файл scr.js содержит одну строку
Код

var a='ku-ku'


и понимает ли сервер на котором расположен scr.js как его вызывают?

Это сообщение отредактировал(а) vpokorp - 26.8.2008, 11:22
PM   Вверх
Ghirik
Дата 26.8.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На самом деле, браузер не дожидается загрузки вашего скрипта. Потому, если alert(имя вашей переменной); стоит сразу после document.write, переменная, скорее всего ещё не определена.

Вы подробнее изложите, чего хотите добиться....

Добавлено @ 11:33
Сделайте так window.setTimeout('alert(имя вашей переменной)', 5000);

Добавлено через 6 минут и 46 секунд
Цитата

и понимает ли сервер на котором расположен scr.js как его вызывают?


Нет, сервер не знает, как вызывается скрипт.

Добавлено через 8 минут и 26 секунд
<script type="text/javascript"> - правильно.
<script language="javascript"> - устарело.

Это сообщение отредактировал(а) Ghirik - 26.8.2008, 11:34


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
vpokorp
Дата 26.8.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, теперь работает - спасибо.


Только 
Код

<script  type="text/javascript">
document.write('<sc'+'ript type="text/javascript" src="scr.js"></sc'+'ript>');
window.setTimeout('document.write(z)', 5000);
</script>


выводит переменную z вместо  всего остального, а как сделать чтобы выводилась просто в нужном месте страницы?

т.е. если штатно сторонний скрипт используется как
 
Код

<script  type="text/javascript">
document.write('<sc'+'ript type="text/javascript" src="scr.js"></sc'+'ript>');
</script>


то можно было бы дополнительно использовать его часть в другом месте страницы
Код

<script  type="text/javascript">
window.setTimeout('document.write(z)', 5000);
</script>




И еще - переменная в чужом скрипте оказалась массивом

Код

 var skaz = [ 
['kolobok','lisa'],
['ded','baba'],
['volk','zajac'],];



как вызвать оттуда значение 'baba' ?
skaz[1][1] ?




PM   Вверх
bars80080
Дата 26.8.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(vpokorp @  26.8.2008,  13:17 Найти цитируемый пост)
skaz[1][1] 

 smile 
PM MAIL WWW   Вверх
vpokorp
Дата 26.8.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 smile 
увы - переменная оказалась еще и в теле функции.
PM   Вверх
Ghirik
Дата 26.8.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

а как сделать чтобы выводилась просто в нужном месте страницы?


Вывести в нужном месте.  smile 

Цитата

то можно было бы дополнительно использовать его часть в другом месте страницы


Если ваш скрипт использует метод document.write, то Вы, скорее всего, не знаете какие тэги генерит подключаемый скрипт. Это затрудняет вставку в нужное место значения переменной.
document.write заменяет ваш исходный html-код. Потому, лучше вообще отказаться от подключения стороннего скрипта этим методом.

Может Вы дадите ссылку на скрипт, который хотите подключить, и скажете, что из него нужно достать. Так будет значительно быстрее. Не хочется выкладывать здесь, тогда напишите в личку.




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
vpokorp
Дата 26.8.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



скрипт создает ссылку вида 

Код

<div class="asdf"><a href="http://site.ru/zxc/peremennaja" target="_blank">Ссылка</a></div><div>неплохая такая ссылка.</div>


задача - найти 'peremennaja'  и вывести ее в другом месте

 smile 
PM   Вверх
Ghirik
Дата 26.8.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<title>Title block</title>
<script type="text/javascript">
<!--
document.write('<div class="asdf"><a href="http://site.ru/zxc/peremennaja" target="_blank">Ссылка</a></div><div>неплохая такая ссылка.</div>');

function getHret() {
    var as = document.getElementsByTagName('a');
    for (var i = 0; i < as.length; i++) {
        if (as[i].href.indexOf('href="http://site.ru/zxc/')) {
            var a = as[i].href.replace(/http:\/\/site.ru\/zxc\//,'');
            alert(a);
        };
    };
};

//-->
</script>
</head>
<body onclick="getHret();">

</body>
</html>


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





--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
vpokorp
Дата 27.8.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо большое.
Это именно то что надо. smile 
После небольшой настройки работает как часы.  smile 

А по поводу правильной постановки задачи соглашусь на все 100, с небольшим добавлением, что делать это можно только, досконально зная предмет, чем я к сожалению не обладаю. smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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