将Javascript文件嵌入XSL文件中

时间:2015-01-19 02:49:37

标签: javascript xslt

我有一个xsl文件,它会生成一个“预览”链接。

  <a>
       <xsl:attribute name="href">
           <xsl:text>#preview</xsl:text>
       </xsl:attribute>
       <xsl:attribute name="onclick">
           <xsl:text>embeddedPreview("</xsl:text>
           <xsl:text>http://docs.google.com/viewer?url=</xsl:text>
           <!--Google can't reach a local development machines, so you may want to code in your production server, where Google downloads the file from-->
           <!--<xsl:text>http://example.edu/</xsl:text>-->
           <!-- Getting bitstreams by ID  XMLUI: /xmlui/bitstream/id  JSPUI: /jspui/retrieve -->
           <xsl:text>/xmlui/bitstream/id/</xsl:text>       
           <xsl:value-of select="substring(@ID,6)"/>
           <xsl:text>&amp;embedded=true</xsl:text>
           <xsl:text>");</xsl:text>
       /xsl:attribute>
           Preview
   </a>

每当点击链接时,onclick事件会调用一个名为embeddedPreview的javascript函数。 embeddedPreview函数存储在mylibrary.js:

/**
 * Creates an iframe with the specified source
 * @REQUIRES jQuery
 * @REQUIRES that there exists an element with ID preview-embed
 */
function embeddedPreview(source) {
    if($("#embed").length > 0) {
        //set the source to the location asked for
        $("#embed").attr("http://19.46.1.34:8081/xmlui/handle/123456789", source);
    } else {
        //Create the embed iframe
        $("#preview-embed").append("<iframe id='embed' src='"+source+"' width='100%' height='342px' style='border:none;'/>"); //requires jQuery
    }
}

每当我点击预览链接时,都会出现错误:

UnCaughtReferenceError: embeddedPreview is not defined
onclick

如何在JSL文件中嵌入Javascript?

1 个答案:

答案 0 :(得分:1)

问题不在XSLT中,因为给出的错误指定调用embeddedPreview但未找到(未定义),这意味着XSLT执行了正确的转换。

所以可能性是:

  • 可能存在导致编译过程在函数定义
  • 之前中止的javascript错误
  • 您忘记将函数定义放在标记

确保在控制台中检查您的javascript错误,如果这不能解决您的问题或发现任何其他错误,请发表评论。

如果这不能解决问题,如果您可以在转换后发布已转换的链接(标记),将会有所帮助。