Перейти к содержимому


Партнерская программа Kredov

  • Закрытая тема Тема закрыта

JavaScript функция alert выводит иероглифы. Как объединить две функции Java.

#1 Teotim

Teotim
  • Пользователь
  • 60 сообщений
  • Репутация: 1
0

Отправлено 10 Апрель 2011 - 19:50

Прописан скрипт:
<script language="JavaScript" src="1.js" type="text/javascript">


файл 1.js содержит:
document.ondragstart = test;
//запрет на перетаскивание
document.oncontextmenu = test;
//запрет на выведение контекстного меню
function test() {
alert ("Уважаемый пользователь, копирование ограничено. Ознакомьтесь пожалуйста с правилами копирования материалов в самом низу страницы.[i]Copying is limited[/i]")
return false
}
function no_copy()
{
alert ("Уважаемый пользователь, копирование ограничено. Ознакомьтесь пожалуйста с правилами копирования материалов в самом низу страницы.[i]Copying is limited[/i]")
return false
}
<!--
function atlpdp1() {for(wi=0;wi<document.all.length;wi++) {if(document.all[wi].style.visibility!='hidden') {document.all[wi].style.visibility='hidden';document.all[wi].id='atlpdpst'}}}function atlpdp2(){for (wi=0;wi<document.all.length;wi++) {if(document.all[wi].id=='atlpdpst')document.all[wi].style.visibility=''}} window.onbeforeprint=atlpdp1;window.onafterprint=atlpdp2;
//-->

Вопрос № 1
Когда выполняются функции function test() и function no_copy(), то в alert выводятся иероглифы вместо русских букв, а латынь Copying is limited выводится нормально.
Как это исправить?

Вопрос № 2
Как объединить функции function test() и function no_copy() в одну, т.е. не писать два раза alert ("Уважаемый пользователь, копирование ограничено. Ознакомьтесь пожалуйста с правилами копирования материалов в самом низу страницы.Copying is limited"), а написать подряд обе функции и один alert?

Вопрос № 3

Можно ли "Гугл Аналитик" и "Яндекс Метрику" запихнуть тоже в файл *.Js Будут ли они тогда нормально работать?
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try{
var pageTracker = _gat._getTracker("UA-**********-**");
pageTracker._trackPageview();
} catch(err) {}
</script>

<!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter5004382 = new Ya.Metrika(******);
yaCounter5004382.clickmap(true);
yaCounter5004382.trackLinks(true);

} catch(e) { }
});
})(window, 'yandex_metrika_callbacks');
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><img src="//mc.yandex.ru/watch/*****" style="position:absolute; left:-9999px;" alt="" /></noscript>
<!-- /Yandex.Metrika counter -->


Заранее огромное СПАСИБО!

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Апрель 2011 - 20:59

Teotim, научитесь пожалуйста оформлять код по правилам. Иначе просто многие будут игнорировать ваши вопросы. Для оформления присутствуют специальные bb-теги.

Вопрос № 1
Когда выполняются функции function test() и function no_copy(), то в alert выводятся иероглифы вместо русских букв, а латынь Copying is limited выводится нормально.
Как это исправить?

По поводу иероглифов, соблюдайте одинаковую кодировку отображения страницы и кодировку файлов. У вас, скорее всего, файлы HTML в кодировке utf-8, а подключаемый вами js-файл в кодировке windows-1251(ANSI). Для перекодировки можно использовать обычный блокнот, выбирая при сохранении нужную кодировку. Не забываем, что сохранять нужно в кодировке UTF-8 без BOM. Можете воспользоваться другими редакторами, например таким, как Notepad++.

Вопрос № 2
Как объединить функции function test() и function no_copy() в одну, т.е. не писать два раза alert ("Уважаемый пользователь, копирование ограничено. Ознакомьтесь пожалуйста с правилами копирования материалов в самом низу страницы.Copying is limited"), а написать подряд обе функции и один alert?

Посмотрел по коду, функция no_copy() нигде не вызывается, поэтому её вообще можно удалить.

Вопрос № 3
Можно ли "Гугл Аналитик" и "Яндекс Метрику" запихнуть тоже в файл *.Js Будут ли они тогда нормально работать?

На этот вопрос затрудняюсь ответить... Если говорить о коде Google Analytics, то он полностью состоит из JS, поэтому его можно перенести в JS файл. Если смотреть на яндекс-метрику, то он состоит как из JS, так и HTML-тегов, поэтому выносить в файл можно только JS-код, которого тут и так мало. Смысл?
  • 0

#3 Teotim

Teotim
    Topic Starter
  • Пользователь
  • 60 сообщений
  • Репутация: 1

Отправлено 10 Апрель 2011 - 22:28

Прошу извинить за неправильное оформление.
Вопрос № 1 - Решён, спасибо!!!! Html в 1251 а *.Js сохранял в Utf 8. =)))

Вопрос № 2 - В body прописано:
<body>
<BODY ONCOPY="return no_copy()">

- функция ещё пригодится
Есть ли возможность объединить?
Вообще я занялся это фигнёй, что бы ускорить загрузку сайта, имеет ли смысл записывать скрипты в *.js?

Вопрос № 3

я заметил, что опера уж очень глючит когда открываю сайт, сохранённый на компе, а когда нет кода, то пашет намного быстрее.
Имеет ли смысл запихнуть Гугл и Яндекс в *.Js?

Вообще я думаю убрать Яндекс метрику, слабовата она по сравнению с Гугл.

С большим уважением, Денис.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Апрель 2011 - 22:37

Teotim,

Вопрос № 2 - В body прописано:

Два тега body не должно быть. Почитайте спецификацию HTML.
Замените приведенное выше на:
<body oncopy="return test()">

И теперь можете удалять функцию no_copy()

Вообще я занялся это фигнёй, что бы ускорить загрузку сайта, имеет ли смысл записывать скрипты в *.js?

Наоборот, подгрузка на страницу js-файлов может тормозить загрузку документа. Подумайте, что вы загружаете один документ (одно обращение к серверу) с кодом в нем, и что вы загружаете 10 документов (10 обращений к серверу)

я заметил, что опера уж очень глючит когда открываю сайт, сохранённый на компе, а когда нет кода, то пашет намного быстрее.
Имеет ли смысл запихнуть Гугл и Яндекс в *.Js?

Нет смысла, просто комментируйте на локалке счетчики:
<!-- что комментируем -->

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

Вообще я думаю убрать Яндекс метрику, слабовата она по сравнению с Гугл.

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

#5 Teotim

Teotim
    Topic Starter
  • Пользователь
  • 60 сообщений
  • Репутация: 1

Отправлено 12 Апрель 2011 - 13:50

Спасибо, тему можно закрыть.
  • 0


Оформление форума – IPBSkins.ru