Товар успешно добавлен в корзину!
Блог Кодинг Портфолио Я

Вкладки(jquery.tabs) + Яндекс.Карты

Кодинг JavaScript

При расположении Яндекс.Карты во вкладке возникает проблема. Карта не отображается нигде, кроме оперы. Решение проблемы искалось достаточно долго. Потом ожидался ответ от техподдержки, который устроил, но лишь частично. 

Универсальное решение состоит в том, чтобы 

1. Переключить вызов функции показа карты на внешний обработчик

2. Универсализировать функцию вызова Яндекс.Карты.

Обработчик у меня выглядит следующим образом:

var mapInited = false;

$('#tab3').click(function(){

 if (!mapInited) {
 initmap(ymaps);
 mapInited = true;
 }
});

 Т.е. идет вызов функции initmap. Теперь мы должны автоматом в коде карты заменить индивидуальное название функции( например, fid_136145656806478191286(ymaps) ) на initmap. Я сделал это средствами xsl

 

  <xsl:variable name="text" select="../sallers/saller[@id=$saller_id]/sallers_comment"/>
<xsl:if test="substring-before($text, 'fid_') != ''">

<xsl:variable name="textpref" select="substring-before($text, 'fid_')"/>
<xsl:variable name="textpost" select="substring-after($text, '(ymaps)')"/>

<xsl:value-of disable-output-escaping="yes" select="$textpref"/>initmap(ymaps)<xsl:value-of disable-output-escaping="yes" select="$textpost"/>
</xsl:if>
<xsl:if test="substring-before($text, 'fid_') = ''">
<xsl:value-of disable-output-escaping="yes" select="$text"/>
 </xsl:if>   

 Единственный минус в том, что это работает только для одной карты. Но скрипт можно доработать при желании для двух и более.

 

 

 

 


21.12.2012, 2245 просмотров.

Добавить комментарий

Имя
E-mail
Комментарий