2012-03-12 2 views
-1

У меня есть следующий скрипт, который генерирует около 4000 строк кода на моем сайте:Cant получить сценарий отложить

<script language="javascript" type="text/javascript"> 
<!-- 
var makemods2 = new Array; 
<?php 
$i = 0; 
foreach ($makemods2 as $k=>$items) { 
foreach ($items as $v) { 
echo "makemods2[".$i++."] = new Array('$k','".addslashes($v->value)."','".addslashes($v->text)."');\n\t\t"; 
} 
} 
?> 
//--> 
</script> 
<?php } ?> 

Это действительно тяжелый на PageLoad, поэтому, конечно, я хочу отложить синтаксический разбор. Однако, поскольку он не является внешним, чем я не могу использовать defer = defer.

Я также прочитать советы от Google, которые предлагают синтаксис, как это, что я не знаю, как писать для приведенного выше кода:

<script language="javascript"> 
var node2 = document.createElement('script'); 
node2.type = 'text/javascript'; 
node2.async = true; 
function switchDynaList2(listname,source,key,orig_key,orig_val){var list=eval("document.moduleForm."+listname);for(i in list.options.length){list.options[i]=null}i=0;for(x in source){if(source[x][0]==key){opt=new Option;opt.value=source[x][1];opt.text=source[x][2];if(orig_key==key&&orig_val==opt.value||i==0){opt.selected=true}list.options[i++]=opt}}list.length=i} 
</script> 

Есть предложения?

+1

Какая у вас конечная цель? Может быть, вы можете использовать AJAX для отображения бит информации за раз, а не для сброса всего объекта на страницу? – Corbin

+0

Вы никогда не назначаете контент 'node2'. Что вы ожидаете от этого? –

+0

Конечная цель на этом сайте: http://xn--bdbasen-exa.com/ Вы можете увидеть выпадающие списки слева. Мы загружаем около 400 яхт и 4000 моделей. Я не визг в ajax, у меня был разработчик, но когда он спросил его, он не в состоянии это сделать. –

ответ

0

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

подход 1

Назад в день до AJAX и такой обработки загрузки страницы состояний, используется для размещения тегов сценариев в конце тега body. Это позволит анализировать содержимое тела, не задерживаясь при выполнении скрипта. Затем все, что вам нужно сделать, это по умолчанию выпадающие списки отключить и включить их, когда скрипт завершит выполнение.

Примечание:

  • Некоторые вопросы укладки может произойти.
  • Этот подход к некоторым считается устаревшим.

подход 2

Переместить PHP код в его собственной страницы и включить сценарий с помощью атрибута SRC тега сценария. Затем вы можете использовать атрибут defer в теге скрипта.

+0

Вставка javascript в конце тега тела по-прежнему очень используется. На самом деле это по-прежнему очень рекомендуется. – Flukey

+0

Хорошо будет пересматривать. – Jay

+0

Мне сложно разместить его в нижней части страницы, так как это модуль, который вызывается в Joomla. –

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