2014-11-23 5 views
1

Я пытаюсь включить внешний файл .js в страницу, которую я создаю в Cocoon/XSLT.Включить внешние .js в Cocoon/XSLT

Dir Struct:

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

В Sitemap:

<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'); 

Когда я смотрю на источник в браузере, я вижу, что тег сценария включен, но приведенный выше оператор журнала не выполняется.

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> 

Таким образом, хотя тег скрипта в коде, я не уверен, что это на самом деле указывает на источник - или заявление журнала будет выполнять.

Когда я смотрю на раздел JavaScript на вкладке Сеть (Firebug), я вижу:

GET my_scripts.js 200 OK 

И следующая запись в консоли:

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

Есть ли что-нибудь еще/«специальный» мне нужно сделать, чтобы включить внешний .js в XSL?

Спасибо!

+0

Пожалуйста, включите HTML это генерирует. Также включите директивы '', которые действуют для вашего XSLT. – Tomalak

+0

Добавлено в сообщение выше. – RobertFrenette

+0

Пока вы смотрите на консоль браузера на вкладке «Сеть», вы видите, что JS-файл извлекается со статусом 200 (или 304) и правильным типом контента? – Tomalak

ответ

1

Исправлено.

Добавлено следующее в Sitemap:

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

Изменено Javascript включают в:

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

Хороший! Решила себя и поделилась решением.(Кстати, я спросил (http://stackoverflow.com/questions/27094226/include-external-js-in-cocoon-xslt#comment42694421_27094226), был ли сценарий обслуживался с правильным типом контента?) – Tomalak

+0

Yup, ты сделал. И ты был прав. Спасибо за помощь! – RobertFrenette

Смежные вопросы