2010-08-27 4 views
2

Я обнаружил, что загрузка одного и того же файла javascript дважды или более (через PHP) может привести к ошибкам в IE (например: line 1 char 1 code 0). Это происходит, когда веб-страница построена из вложенных шаблонов - в этом случае CakePHP.Избегайте нескольких экземпляров одного и того же JS-файла

Есть ли способ включить файл только один раз?

Возможно, в CakePHP это можно сделать, манипулируя $scripts_for_layout variable? Чтобы это сработало, скрипты должны были быть загружены не-встроенными.

Редактировать: Я использую 1.2, поэтому опция $ html-> script недоступна. Позор как один из вариантов: 'once'[true|false]

+0

@cdburgess: thanks. – Leo

ответ

2

Поместите все ваши JS-файлы в массив. Затем сделайте его уникальным и используйте метод CakePHP script для включения файлов сценариев.

<?php 
//earlier in code... add/edit values in this array 
$scripts = array('jquery','wysiwyg','scripts'); 

//make it unique 
$scripts = array_unique($scripts); 

//Use CakePHP script method to load multiple external js files: 
echo $html->script($scripts); 
?> 
+0

Извините, я должен был сказать, что скрипт cakephp 1.2.x - $ html-> недоступен. Исправлено Q. – Leo

+0

Кроме того, в 1.3 имеется опция «один раз». – Leo

+1

Да, это работает в 1.3. Возможно, его время для обновления. – shamittomar

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