XSL If Statement используется для когда нажимается ссылка - PullRequest
1 голос
/ 10 июня 2011

У меня есть RSS-канал, который проходит через XSLT в файле .xsl.У меня есть ссылка «Показать», которая при нажатии отображает скрытый DIV с Iframe, который имеет источник полной страницы уникального элемента RSS.

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

Я хочу только иметьiframe загружает источник после нажатия кнопки «Показать».Как я могу вызвать это с помощью оператора XSLT If?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:user="urn:my-extension-lib:date">
<xsl:template match="/">
    <xsl:for-each select="rss/channel/item">            
        <div style="margin-bottom: 30px;">
            <div style="margin: 5px;">
                <div style="font-weight: bold;">                        
                    <a href="{link}" target="_blank" style="font-size: 10pt;">
                        <xsl:value-of select="title" />
                    </a>
                </div> 
                <div>
                    <xsl:value-of select="user:GetFormattedDate(pubDate,'MMM d, yyyy hh:mm tt')" />
                </div>
            </div>
            <div style="padding-left:30px">
                <a href="javascript:test('{guid}', '{link}');" id="{link}">Show</a>
            </div>
            <div style="margin: 20px 20px 20px 40px;display:none" id="{guid}">
                <iframe width="685" height="400" scrolling="yes" frameborder="yes" src="{link}"></iframe>
            </div>
        </div>
    </xsl:for-each>
</xsl:template>

1 Ответ

1 голос
/ 14 июня 2011

Я думаю, что вам нужно сначала загрузить «пустую» страницу для каждого IFRAME.Например, страница с именем blank.htm, которая пуста.Кроме того, вы можете присвоить каждому IFRAME тег ID, чтобы вы могли легко получить к нему доступ с помощью Javascript для изменения источника

<iframe id="iframe{guid}" width="685" height="400" scrolling="yes" frameborder="yes" src="blank.htm"/>

Затем вы можете закодировать свой javascript следующим образом:измените источник IFRAME на правильную страницу.

function test(id, link)
{
   document.getElementById(id).style.display = 'block';
   document.getElementById("iframe" + id).src = link;
}

Вот пример полной таблицы стилей для вас

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <html>
         <head>
            <title>Test</title>
            <script> 
            function test(id, link) 
            { 
               document.getElementById(id).style.display = 'block'; 
               document.getElementById("iframe" + id).src = link; 
            } 
            </script>
         </head>
         <body>
            <xsl:for-each select="rss/channel/item">
               <div style="margin-bottom: 30px;">
                  <div style="margin: 5px;">
                     <div style="font-weight: bold;">
                        <a href="{link}" target="_blank" style="font-size: 10pt;">
                           <xsl:value-of select="title"/>
                        </a>
                     </div>
                     <div>
                        <xsl:value-of select="pubDate"/>
                     </div>
                  </div>
                  <div style="padding-left:30px">
                     <a href="javascript:test('{guid}', '{link}');" id="{link}">Show</a>
                  </div>
                  <div style="margin: 20px 20px 20px 40px;display:none" id="{guid}">
                     <iframe id="iframe{guid}" width="685" height="400" scrolling="yes" frameborder="yes" src="blank.htm"/>
                  </div>
               </div>
            </xsl:for-each>
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...