我在.xsl文件上通过XSLT提取RSS源。我有一个“显示”链接,当点击时,会显示一个隐藏的DIV,其中包含具有唯一RSS项目整页源的Iframe。
问题是,由于这个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>
答案 0 :(得分:1)
我认为您需要做的是首先为每个IFRAME加载一个“空白”页面。例如,名为blank.htm的页面为空。此外,您可能希望为每个IFRAME提供一个ID标记,因此您可以使用Javascript轻松访问它以更改源
<iframe id="iframe{guid}" width="685" height="400" scrolling="yes" frameborder="yes" src="blank.htm"/>
然后,您可以像这样对您的javascript进行编码,以显示DIV,并将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>