Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.03.2015, 09:17
Новичок на форуме
Отправить личное сообщение для Mack Посмотреть профиль Найти все сообщения от Mack
 
Регистрация: 04.03.2015
Сообщений: 2

Не удается подключить javascript-код из отдельного файла
Не удается подключить javascript-код из отдельного файла
Доброго времени суток, форумчане! Задался вопросом повышения скорости сайта и оптимизации java скриптов на сайте. Почитал, что лучше их вызывать из отдельного файла. Наткнулся на ваш очень полезный форум. Нашел здесь искомый метод реализации по своему вопросу, но подключить из отдельного файла так не удалось. Использовал инструкцию и примеры с вашего форума, но все безрезультатно. У меня все javascript-коды вписаны в страницы сайта, хотелось бы их перенести в отдельные файлы, так как мне не хватает знаний или понимания некоторых нюансов у меня это сделать не получаться. Прошу дельного совета у специалистов.

Вот сайт на CMS WordPress с которым я работаю: http://unusualthings.ru/
Хотелось бы перенести социальные кнопки, скрипт вставляющий ссылку на источник и «липкого» блока «Стать подписчиком» в отдельный файл и прописав в один или несколько файлов, вызывать их отдельно путем <script src="/js/script1.js"></script>
<script src="/js/script2.js"></script> и т.д.

Что я пытался зделась, чтобы подключить javascript из отдельного файла:
1. Создал отдельный файл script.js. Поместил в файл скрипт без тегов <script type="text/javascript">скрипт </script> т.е. чистый скрипт.
2. В файле header.php в вордпрессе перед закрывающим тегом </head> поместил функцию выхова <script src="/js/script1.js"></script>.

Но ничего не получилось! Для чистоты эксперимента проделывал данную операцию по несколько раз. Вставлял в необходимые места функцию вызова скрипта, пытался по отдельности каждый скрипт вызывать, но все безрезультатно.
Может это такие специфические скрипты, которые нельзя вызвать из отдельного файла? В "теле" сайта прописанными в файлах они работают, а по отдельности вызвать не удается. Вот собственно и они :

Скрипт создания "липкого" для подписчиков в сайдбаре
<div id="fixblock"><div class="sidebartitle">Стать подписчиком</div></div>
<script type="text/javascript">
function getTopOffset(e) { 
	var y = 0;
	do { y += e.offsetTop; } while (e = e.offsetParent);
	return y;
}
var block = document.getElementById('fixblock'); /* fixblock - значение атрибута id блока */
if ( null != block ) {
	var topPos = getTopOffset( block );
	window.onscroll = function() {
		var newcss = (topPos < window.pageYOffset) ? 
			'top:10px; width:280px; position: fixed;' : 'position:static;';
		block.setAttribute( 'style', newcss );
	}
}
</script>

Скрипт вставки ссылки на источник при копировании
<script type="text/javascript">
var source_link = '<p>Источник: <a href="' + location.href + '">' + location.href + '</a></p>';
jQuery(
    function($)
    {
        if (window.getSelection) $('#content div.post').bind(
            'copy',
            function()
            {
                var selection = window.getSelection();
                var range = selection.getRangeAt(0);
                var magic_div = $('<div>').css({ overflow : 'hidden', width: '1px', height : '1px', position : 'absolute', top: '-10000px', left : '-10000px' });
                magic_div.append(range.cloneContents(), source_link);
                $('body').append(magic_div);
                var cloned_range = range.cloneRange();
                selection.removeAllRanges();
                var new_range = document.createRange();
                new_range.selectNode(magic_div.get(0));
                selection.addRange(new_range);
                window.setTimeout(
                    function()
                    {
                        selection.removeAllRanges();
                        selection.addRange(cloned_range);
                        magic_div.remove();
                    }, 0
                );
            }
        );
    }
);
</script>

Социальные кнопки:
<script type="text/javascript">(function() {
  if (window.pluso)if (typeof window.pluso.start == "function") return;
  if (window.ifpluso==undefined) { window.ifpluso = 1;
    var d = document, s = d.createElement('script'), g = 'getElementsByTagName';
    s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
    s.src = ('https:' == window.location.protocol ? 'https' : 'http')  + '://share.pluso.ru/pluso-like.js';
    var h=d[g]('body')[0];
    h.appendChild(s);
  }})();</script>

Хотелось бы отдельно еще вызвать кнопки плавной прокрутки страницы "Вверх-вниз", но хотелось бы пока с этим разобраться.
Прошу помощи у специалистов. Заранее благодарю за дельный совет!

Последний раз редактировалось Mack, 04.03.2015 в 09:28.
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2015, 22:48
Интересующийся
Отправить личное сообщение для Foxeh Посмотреть профиль Найти все сообщения от Foxeh
 
Регистрация: 15.04.2015
Сообщений: 20

Подключаемые скрипты желательно использовать уже ПОСЛЕ отрисовки того места на странице, с которым они работают. Если скрипт используется ТОЛЬКО на одной из страниц - нет смысла его грузить по всему сайту.
Относительно скорости загрузки.... Какая разница, исходя из логики действий, откуда прочитать, к примеру, 20байт кода? Ах да, при вызове из отдельного файла вы затратите от 0.0001 доли секунды до 0.2 секунд на парсинг ссылки и создания дополнительного GET запроса к самому скрипту. Оно вам надо?
Кстати, многими любимый ВК использует JS код в теле страниц в основном.
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2015, 21:51
Аспирант
Отправить личное сообщение для igormog Посмотреть профиль Найти все сообщения от igormog
 
Регистрация: 08.04.2015
Сообщений: 39

Mack, у Вас скорей всего неправильный путь к файлу JS
Попробуйте в футере задать путь относительно корня сайта, например:

<script src="/wp-content/themes/mytheme/js/jquery.min.js" type="text/javascript"></script>


А вообще правильнее подключать файлы в WP с помощью функции wp_enqueue_scripts Пример:

function my_scripts_method() {

	wp_register_script( 'controllers-angularjs', '/wp-content/themes/mytheme/js/controllers.js' );
	wp_enqueue_script( 'controllers-angularjs' );

}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подключение файла javascript vladimircape Общие вопросы Javascript 1 13.09.2012 10:40
Не работает код из внешнего файла в IE6 Petka jQuery 2 03.03.2010 16:09
javascript c сайта, как получить код sergeykrk Общие вопросы Javascript 1 05.12.2009 10:48
На много ли код jQuery медленнее чистого javascript format1981 jQuery 8 06.11.2009 10:42
Расшифруйте код javascript sochinec Общие вопросы Javascript 7 01.08.2009 23:51