2009-11-20 4 views
7

Просто выходите из моих обучающих колес JavaScript.Почему Google не отслеживает код отслеживания Google Analytics?

Почему Google выбирает unescapedocument.write линия в Часть 1 ниже?

Почему бы им просто не написать так? Может быть, unescape требуется для более старой совместимости браузера?

document.write('<script src="' 
    + gaJsHost 
    + 'google-analytics.com/ga.js" type="text/javascript"></script>'); 

Для справки, весь код отслеживания Google Analytics выглядит следующим образом:

Часть 1:

<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" 
)); 
</script> 

Часть 2:

<script type="text/javascript"> 
try 
{ 
    var pageTracker = _gat._getTracker("UA-0000000-0"); 
    pageTracker._trackPageview(); 
} 
catch(err){} 
</script> 

Я понимаю вес а остальная часть кода, просто интересуется неотъемлемой частью.

Редактировать

Суть заключается в том, unescape требуется. Проголосовал за закрытие этого вопроса, потому что это дубликат (см. Ответ, помеченный как правильно).

+0

Возможный дубликат [В чем преимущество использования unescape на document.write для загрузки javascript?] (Http://stackoverflow.com/questions/1224670/what -is-the-advantage-of-use-unescape-on-document-write-to-load-javascript) –

ответ

5

Это означает, что код будет работать в XML/XHTML и HTML, не возиться с CDATA

Пожалуйста, см: https://stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript

+0

Приятно найти ответы на ранее заданный вопрос. Хотя его все же можно заставить работать как с XHTML, так и с HTML «без необходимости возиться с CDATA» и без необходимости «unescape»: http://stackoverflow.com/questions/728697/javascript-external-script-loading-strangeness/ 729072 # 729072 –

0

Запись непосредственно в документ без использования '<' или '>' означает, что вам не нужно избегать их в форматах документов, которые интерпретируют их буквально. В противном случае правильная интерпретация заключается в том, что теги <script> начинаются внутри строки, что не является желательным.

Также обратите внимание, что в предлагаемом альтернативном коде есть ошибка (вы пропустили отметку с цитатой после окончания атрибута src).

+0

Исправлена ​​отметка кавычки. – Jeff

2

Мое понимание, когда </script> встречается даже в кавычках "</script>" парсер неправильно поняли, что его достигают конца скрипта, поэтому они не могут сделать, как "</script>"

И Google хочет, чтобы убедиться, что переменные, как pageTracker устанавливаются перед загрузкой google-analytics.com/*.js, поэтому снятие с охраны %3Cscript и %3E%3C/script%3E - это только путь для них.

только мои 2 цента, извините Если я говорю неправильно.

0

Я думаю, что:

document.wrIte('<script src="'" 

потерпит неудачу HTML Validation, а также.Интересно, что он также разбивает предварительный просмотр в этом поле комментариев :)

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