Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2008, 13:38
Новичок на форуме
Отправить личное сообщение для vasiliyb Посмотреть профиль Найти все сообщения от vasiliyb
 
Регистрация: 28.09.2008
Сообщений: 7

Модификация данных скрипта информера
Ставлю информер rbc.ru на сайт, все замечательно, настраивается, НО, все равно имеется "лишний" столбец, обязательный по мнению разработчика. Это дата. Информер естественно живёт на сайте производителя и перенос его на свой сайт обеспечивает отображение "замороженых" результатов. На странице моего сайта скрипт информера вызвается и результат отображается посредством:
<script src="http://pics.rbc.ru/js/rbc_indices.js"></script>
<script>
print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script>

Возможно ли получать результат работы скрипта в какой-то дополнительный яваскрипт-обработчик и модифицировать их? Догадываюсь, что да, но как?
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2008, 14:42
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Вам нужно посмотреть, что выводит print_ind (например в firefox - source-код выделенного объекта), а работать с этими данными можно точно также, как с обычным html.
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2008, 11:38
Новичок на форуме
Отправить личное сообщение для vasiliyb Посмотреть профиль Найти все сообщения от vasiliyb
 
Регистрация: 28.09.2008
Сообщений: 7

В FF всё так же выводится через print, т.е. в исходнике я вижу
<script src="http://pics.rbc.ru/js/rbc_indices.js"></script>
<script>
print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script>
Но, я естественно могу посмотреть верстку в скрипте:
function print_ind(uticker, no_blank_tr) { 
tickers=new Array('_USD_SW_','_USD_TOD_','_USD_TOM_','_USD_NAL_','_DEM_NAL_','_EUR_NAL_','_FOREX_USD_JPY_','_FOREX_EUR_USD_','_RTS_INDEX_','_RBCCI_','_USD_CB_','_DEM_CB_','_FIM_CB_','_UAG_CB_','_GRD_CB_','_UAH_CB_','_FRF_CB_','_NOC_CB_','_IRF_CB_','_NLG_CB_','_POE_CB_','_CAD_CB_','_ESP_CB_','_DAC_CB_','_ITL_CB_','_AUS_CB_','_EUR_CB_','_BEF_CB_','_SWC_CB_','_ICC_CB_','_SYD_CB_','_CHF_CB_','_JPY_CB_','_TRY_CB_','_GBP_CB_','_BER_CB_','_AUD_CB_','_CB_GOLD_','_EESR_','_LKOH_','_RTKM_','_MSNG_','_SPC_','_WEATHER_27612_','_WEATHER_26063_','_WEATHER_33345_','_WEATHER_26850_','_WEATHER_27459_','_WEATHER_29634_');

tck_data=new Array('e.gif"','e.gif"','e.gif"','green.gif"','green.gif"','red.gif"','green.gif"','red.gif"','red.gif"','red.gif"','green.gif"','e.gif"','e.gif"','e.gif"','e.gif"','green.gif"','e.gif"','red.gif"','e.gif"','e.gif"','e.gif"','green.gif"','e.gif"','red.gif"','e.gif"','e.gif"','red.gif"','e.gif"','red.gif"','red.gif"','green.gif"','red.gif"','green.gif"','green.gif"','red.gif"','green.gif"','red.gif"','red.gif"','red.gif"','red.gif"','green.gif"','green.gif"','green.gif"','red.gif"','red.gif"','red.gif"','red.gif"','red.gif"','red.gif"');


tck_data1=new Array('http://stock.rbc.ru/demo/selt.0/intraday/USD0000000SW.rus.shtml?show=intra3">USDRUB tod','http://stock.rbc.ru/demo/selt.0/intraday/USD000000TOD.rus.shtml?show=intra3">USDRUB uts','http://stock.rbc.ru/demo/selt.0/intraday/USD000000TOM.rus.shtml?show=intra3">USDRUB tom','http://www.rbc.ru/cash/">Нал.USD','http://www.rbc.ru/cash/">Нал.DEM','http://www.rbc.ru/cash/">Нал.EUR','http://stock.rbc.ru/demo/forex.9/daily/USD_JPY.rus.shtml">USD/JPY','http://stock.rbc.ru/demo/forex.9/daily/EUR_USD.rus.shtml">EUR/USD','http://stock.rbc.ru/demo/rts.1/daily/RTSI.rus.shtml">РТС','http://stock.rbc.ru/demo/rbc.0/intraday/COMPIND.rus.shtml?show=intra3">RBC comp.','http://stock.rbc.ru/demo/cb.0/daily/USD.rus.shtml" title="1 Доллар США">USD ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177626">DEM ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177632">FIM ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/UAH.rus.shtml" title="10 Украинских гривен">UAH ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177635">GRD ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/UAH.rus.shtml">UAH ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177633">FRF ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/NOK.rus.shtml" title="10 Норвежских крон">NOK ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177636">IRF ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177644">NLG ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177646">POE ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/CAD.rus.shtml" title="1 Канадский доллар">CAD ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177630">ESP ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177627" title="10 Датских крон">DKK ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177638">ITL ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177621">AUS ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/EUR.rus.shtml" title="1 ЕВРО">EUR ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177623">BEF ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177647" title="10 Шведских крон">SEK ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177637" title="100 Исландских крон">ISK ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177648" title="1 Сингапурский доллар">SGD ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=177625" title="1 Швейцарский франк">CHF ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/JPY.rus.shtml" title="100 Японских иен">JPY ЦБ РФ','http://www.rbc.ru/cur_cbr.shtml" title="1 Новая турецкая лира">TRY ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/GBP.rus.shtml" title="1 Англ. фунт стерлингов">GBP ЦБ РФ','http://db.rbc.ru/rbc/quotes/chart.html?TickerID=285920" title="1000 Белорусских рублей">BYR ЦБ РФ','http://stock.rbc.ru/demo/cb.0/daily/AUD.rus.shtml" title="1 Австралийский доллар">AUD ЦБ РФ','http://www.rbc.ru">Золото ЦБ РФ','http://stock.rbc.ru/demo/rts.1/daily/EESR.rus.shtml?show=1M">EESR','http://stock.rbc.ru/demo/rts.1/daily/LKOH.rus.shtml?show=1M">LKOH','http://stock.rbc.ru/demo/rts.1/daily/RTKMP.rus.shtml?show=1M">RTKM','http://stock.rbc.ru/demo/rts.1/daily/MSNG.rus.shtml?show=1M">MSNG','http://stock.rbc.ru/demo/index.0/intraday/SPX.rus.shtml?show=intra3">SPX','http://www.rbc.ru/meteo.shtml">Погода','http://www.rbc.ru/meteo.shtml">Погода','http://www.rbc.ru/meteo.shtml">Погода','http://www.rbc.ru/meteo.shtml">Погода','http://www.rbc.ru/meteo.shtml">Погода','http://www.rbc.ru/meteo.shtml">Погода');

tck_data2=new Array('---','---','---','12:03','12:03','12:03','12:00','12:00','12:02','12:02','30/09','&nbsp;','&nbsp;','&nbsp;','&nbsp;','27/09','&nbsp;','27/09','&nbsp;','&nbsp;','&nbsp;','27/09','&nbsp;','27/09','&nbsp;','&nbsp;','27/09','&nbsp;','27/09','27/09','27/09','27/09','27/09','27/09','27/09','27/09','27/09','27/09','30/05','11:46','24/09','23/09','26/09','29/09','29/09','29/09','29/09','29/09','29/09');

tck_data3=new Array('---','---','---','25.&nbsp;031','16.&nbsp;925','36.&nbsp;531','106.&nbsp;12','1.&nbsp;4346','1&nbsp;234.&nbsp;34','105.&nbsp;7446','25.&nbsp;2464','&nbsp;','&nbsp;','&nbsp;','&nbsp;','49.&nbsp;2561','&nbsp;','44.&nbsp;0732','&nbsp;','&nbsp;','&nbsp;','24.&nbsp;1549','&nbsp;','48.&nbsp;9267','&nbsp;','&nbsp;','36.&nbsp;5948','&nbsp;','37.&nbsp;7749','26.&nbsp;6831','17.&nbsp;5286','22.&nbsp;9814','23.&nbsp;6716','20.&nbsp;2362','45.&nbsp;9055','11.&nbsp;8476','20.&nbsp;7383','699.&nbsp;09','1.&nbsp;02','59','8.&nbsp;5','0.&nbsp;058','1&nbsp;213.&nbsp;27','<FONT COLOR="red">12...14','<FONT COLOR="red">9...11','<FONT COLOR="red">14...16','<FONT COLOR="red">11...13','<FONT COLOR="red">11...13','<FONT COLOR="red">4...6');

tck_data4=new Array('>---','>---','>---','>25.&nbsp;205','>&nbsp;','>36.&nbsp;816','>106.&nbsp;17','>1.&nbsp;4351',' COLOR="red">-3.&nbsp;98%',' COLOR="red">-2.&nbsp;47%',' COLOR="green">0.&nbsp;2243',' COLOR="e">0',' COLOR="e">0',' COLOR="e">0',' COLOR="e">0',' COLOR="green">0.&nbsp;1956',' COLOR="e">0',' COLOR="red">-0.&nbsp;4038',' COLOR="e">0',' COLOR="e">0',' COLOR="e">0',' COLOR="green">0.&nbsp;1172',' COLOR="e">0',' COLOR="red">-0.&nbsp;2802',' COLOR="e">0',' COLOR="e">0',' COLOR="red">-0.&nbsp;1151',' COLOR="e">0',' COLOR="red">-0.&nbsp;2701',' COLOR="red">-0.&nbsp;1512',' COLOR="green">0.&nbsp;0095',' COLOR="red">-0.&nbsp;0277',' COLOR="green">0.&nbsp;0993',' COLOR="green">0.&nbsp;1213',' COLOR="red">-0.&nbsp;4724',' COLOR="green">0.&nbsp;0587',' COLOR="red">-0.&nbsp;1538',' COLOR="red">-12.&nbsp;55',' COLOR="red">-6.&nbsp;42%',' COLOR="red">-5.&nbsp;90%',' COLOR="green">13.&nbsp;33%',' COLOR="green">9.&nbsp;43%',' COLOR="green">0.&nbsp;34%','>Москва','>С-Петербург','>Киев','>Минск','>Н.Новгород','>Новосибирск');

document.write('<TABLE CELLSPACING=2 CELLPADDING=0 BORDER=0 ALIGN=CENTER>');

i1=0;i2=0;i3=0;
for(i in tickers) { 
  if (uticker.indexOf(tickers[i]) != -1){
  if ((i >= 0) && (i < 7) && (i1==0)){
    document.write('<TR><TD class=ltl colspan=3>&nbsp;</TD><TD class=ltl ALIGN=right><B>спрос</B></TD><TD class=ltl ALIGN=right><B>предл.</B></TD></TR>');
    i1=1;
  }
  if ((i >= 7) && (i < 23) && (i2==0)){
    document.write('<TR><TD class=ltl colspan=3>&nbsp;</TD><TD class=ltl ALIGN=right><B>знач.</B></TD><TD class=ltl ALIGN=right><B>изм.</B></TD></TR>');
    i2=1;
  }
  if ((i >= 23) && (i3==0)){
    //document.write('<TR><TD class=ltl colspan="5">&nbsp;</TD></TR>');
    i3=1;
  }
    document.write('<TR><TD ALIGN=center><IMG SRC="http://pics.rbc.ru/img/informer/arrow_'+tck_data[i]+' WIDTH=10 HEIGHT=10 BORDER=0></TD><TD ALIGN="LEFT" class=ltl><FONT COLOR="#333333"><A class=ltl target="_blank" HREF="'+tck_data1[i]+'</A>&nbsp;</FONT></TD><TD ALIGN=right class=ltl>'+tck_data2[i]+'&nbsp;</TD><TD ALIGN=right class=ltl>'+tck_data3[i]+'&nbsp;</TD><TD ALIGN=right class=ltl><FONT class=ltl'+tck_data4[i]+'&nbsp;</FONT></TD></TR>'); 
  }
} 
if(!no_blank_tr) {
	document.write('<TR><TD class=ltl colspan="5">&nbsp;</TD></TR>');
}
document.write('<TR><TD class=ltl colspan="5" align=center><A class=ltl target="_blank" HREF="http://www.informer.ru/cgi-bin/redirect.cgi?src_url=rbc_indices.js&url=http://www.rbc.ru">РИА РосБизнесКонсалтинг</A></TD></TR>');

document.write('</TABLE>');
}
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2008, 11:42
Новичок на форуме
Отправить личное сообщение для vasiliyb Посмотреть профиль Найти все сообщения от vasiliyb
 
Регистрация: 28.09.2008
Сообщений: 7

т.е. мне надо сделать обработчик, который бы работал с этими же данными по своему (хотя бы оставлю все тоже, но уберу
<TD ALIGN=right class=ltl>'+tck_data2[i]+'&nbsp;</TD>
Ответить с цитированием
  #5 (permalink)  
Старый 29.09.2008, 11:55
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

Сообщение от vasiliyb
В FF всё так же выводится через print, т.е. в исходнике я вижу
Ставь firedebug для FF - он показывает динамически изменённое содержимое.
Ответить с цитированием
  #6 (permalink)  
Старый 29.09.2008, 13:36
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Так в чем проблема?
Поместите вывод скрипта в определённый div:
<div id="informer"><script>
print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script></div>

Можете скрыть через стили этот элемент, пока страница загружается.
А по событию onload - находить нужные элементы и показать блок.
Ответить с цитированием
  #7 (permalink)  
Старый 29.09.2008, 13:58
Новичок на форуме
Отправить личное сообщение для vasiliyb Посмотреть профиль Найти все сообщения от vasiliyb
 
Регистрация: 28.09.2008
Сообщений: 7

Андрей Параничев,
спасибо! ключевое слово для меня здесь "находить нужные элементы", как я могу с ними работать, если как я понимаю они уже представлены как сверстаная таблица, без каких-то классов/идентификаторов отдельных ячеек.
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2008, 15:48
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

vasiliyb,
Можно вот так:
<html>
<head>
	<script src="http://pics.rbc.ru/js/rbc_indices.js"></script>
	<style>
		#informer {
			visibility: hidden;
		}
	</style>
	<script>
		window.onload = function() {
			var informer = document.getElementById("informer");
			// Берем все <tr> из информера:
			var trs = informer.getElementsByTagName("TR");
			for (var i = 0, l = trs.length; i < l; i++) {
				// Получаем все <td> из каждого <tr>:
				var tds = trs[i].getElementsByTagName("TD");
				// На первой строчке нужно изменить colSpan (с 3 на 2):
				if (i == 0) {
					tds[0].colSpan = 2;
					continue;
				}
				// "Дата" это третий столбец (2ой начиная с 0)
				// просто удаляем его из таблицы (если он есть):
				tds[2] && tds[2].parentNode.removeChild(tds[2]);
			}
			
			// "Показываем" информер:
			informer.style.visibility = "visible";
		};
	</script>
</head>
<body>
	<div id="informer">
		<script>
		print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
		</script>
	</div>
</body>
</html>

Не самый оптимальный вариант, но для данной задачи может быть использован.
Ответить с цитированием
  #9 (permalink)  
Старый 29.09.2008, 20:24
Новичок на форуме
Отправить личное сообщение для vasiliyb Посмотреть профиль Найти все сообщения от vasiliyb
 
Регистрация: 28.09.2008
Сообщений: 7

То, что нужно! Супер! Андрей, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение данных на стороне клиента средствами Javascript baal1988 Events/DOM/Window 4 24.08.2008 20:32