我正在尝试在Cocoon / XSLT中构建的页面中包含一个外部.js文件。

目录结构:

/my_project
    /xsl/my_page.xsl
    /js/my_scripts.js
    sitemap.xmap


在站点地图中:

<map:match pattern="my_page.html">
    <map:generate src="cocoon:/my_data.xml" />
    <map:transform src="xsl/my_page.xsl" type="xslt2">
        <map:parameter name="baselink" value="{baselink:SitemapBaseLink}" />
    </map:transform>
    <map:serialize type="html5" />
</map:match>


在my_page.xsl中:

<xsl:param name="baselink" />
...
<script src="//code.jquery.com/jquery-1.11.1.min.js">&#160;</script>
<script src="../js/my_scripts.js" type="text/javascript">&#160;</script>


在my_scripts.js中,我只有一行用于测试:

console.log('Success');


当我在浏览器中查看源代码时,我看到其中包括script标记,但是上面的log语句没有执行。

HTML:

<!DOCTYPE html SYSTEM "about:legacy">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        …
    </head>
    <body>
        …
        <script src="//code.jquery.com/jquery-1.11.1.min.js"> </script>
        <script src="../js/my_scripts.js" type="text/javascript"> </script>
    </body>
</html>


因此,尽管脚本标记在代码中,但我不确定它实际上是否指向源-否则将执行log语句。

当我查看“网络”标签(Firebug)的“ JavaScript”部分时,我看到:

GET my_scripts.js 200 OK


并且以下条目在控制台中:

<?xml version="1.0" encoding="UTF-8"?> my_scripts.js (line 1)


为了在XSL中包含外部.js,我还需要做其他/“特殊的”事情吗?

谢谢!

最佳答案

固定。

在站点地图中添加了以下内容:

<map:match pattern="**.js">
    <map:read src="js/{1}.js" mime-type="text/javascript" />
</map:match>


将javascript include更改为:

<script src="my_scripts.js" type="text/javascript">&#160;</script>

关于javascript - 在Cocoon/XSLT中包含外部.js,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27094226/

10-09 05:39