- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
jQuery(document).ready(function (){
var setCookie = function (c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
var getCookie = function (cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++){
var c = ca[i].replace(/^\s+|\s+$/gm,'');
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}
if (window.location.hash=='#stop' || (!getCookie('crimea_is_ukraine') && jQuery.inArray(codehelper_ip.Country,ciu_countries)>=0)){
if (typeof(_gaq)!='undefined'){
_gaq.push(['_trackEvent', 'Protest', 'Show', 'Crimea is Ukraine']);
}
gost 07.09.2014 09:24 # +1
Elvenfighter 07.09.2014 10:41 # +1
inkanus-gray 07.09.2014 12:07 # +1
Elvenfighter 07.09.2014 14:44 # +1
wvxvw 07.09.2014 15:59 # +2
inkanus-gray 07.09.2014 16:35 # +1
inkanus-gray 07.09.2014 16:25 # 0
eth0 07.09.2014 18:31 # 0
inkanus-gray 07.09.2014 22:32 # +1
bormand 08.09.2014 05:49 # 0
Qwertiy 08.09.2014 09:10 # +1
blablabla2 08.09.2014 08:11 # −1
bormand 08.09.2014 08:25 # +1
blablabla2 08.09.2014 09:17 # 0
bormand 08.09.2014 09:46 # 0
blablabla2 08.09.2014 10:42 # +3
bormand 08.09.2014 11:04 # +2
Теперь понял. Спасибо.
inkanus-gray 08.09.2014 15:50 # 0
bormand 08.09.2014 15:53 # +1
P.S. Хотя можно дождаться события о загрузке, и там уже и грузить скрипт через добавление document.createElement('script') к дому... Это, емнип, и загрузку блочить не будет, в отличие от write...
inkanus-gray 08.09.2014 18:30 # +1
Только в данном случае нужно сделать без async, потому что ниже используются результаты выполнения загруженного кода. Так делают и всё работает
bormand 08.09.2014 18:40 # +1
Вставить его перед всеми остальными скриптами? Ну-ну, они один хер уже исполнились :)
P.S. А, это как раз потому, что document.body еще null, а вот как минимум один скрипт (который сейчас и исполняется) уже спарсился и есть в доме. Т.е. ждать события о загрузке не нужно. Хитрый план.
inkanus-gray 08.09.2014 19:01 # 0
Хотя раз уж мы используем jquеry, можно просто написать $.getJSON(...). Увидев, что запрос кроссдоменный, jquery сам допишет обёртку.
Кстати, я вообще не понимаю, зачем в таком примитивном скрипте используется jquery (наличие которого скрипт не проверяет и сам подгрузить не может), хотя можно было сделать всё без него и не требовать лишних зависимостей.
bormand 08.09.2014 19:07 # +1
Может. К примеру, тем же хаком с document.write().
inkanus-gray 08.09.2014 19:10 # +1
P.S. Немножко для розжига на тему «document.write vs DOM»:
http://stackoverflow.com/questions/367214
P.P.S. http://learn.javascript.ru/document-write
bormand 08.09.2014 18:53 # +1
eth0 08.09.2014 18:58 # +2
Обычный сервер тебе может подсунуть произвольный код безо всяких проблем. (Что регулярно и происходит.)
bormand 08.09.2014 19:04 # +1
Здесь я рассматриваю ситуацию не с точки зрения юзера, а с точки зрения разраба сайта: я хочу просто получить немного инфы через некое API, а мне присылают скрипт, который несет потенциальную угрозу посетителям моего сайта (и, соответственно, моей репутации). Веб такой веб.
inkanus-gray 08.09.2014 19:06 # +1
inkanus-gray 08.09.2014 19:15 # +2
http://share.yandex.ru/gpp.xml?url=http://govnokod.ru/
bormand 08.09.2014 12:11 # +2
Для cdn'ок гугла и прочих серьезных контор я, пожалуй, сделаю исключение. А остальные - нахуй и впизду.
chtulhu 08.09.2014 12:47 # +1
На гитхабе был скрипт, который имитирует apis.google.com итп
bormand 08.09.2014 12:56 # 0
Ну, в данном случае, не я, а все мои гипотетические посетители.
P.S. Если гугл своей CDN'кой начнет раздавать троянов вместо jQuery и пиздить куки - это будет неплохим ударом по его репутации. Поэтому он так делать не будет (скорее всего). В отличие от всяких стоп-путлеру, которым терять особо то и нечего.
inkanus-gray 08.09.2014 19:53 # +2
• http://habrahabr.ru/post/142909/
• https://github.com/twbs/bootstrap/issues/401
bormand 08.09.2014 20:26 # 0
Ну провайдер в любой сайт может вставить.
eth0 08.09.2014 20:35 # +5
Я до сих пор помню, как мегафно рвал воип-сессии, или воровал номер, на который звонили, прям из пакетов, и выставлял счёт как за звонок по сотовому.
От них давно пора поднимать впн на доверенный сервер.
inkanus-gray 08.09.2014 20:55 # +3
bormand 08.09.2014 21:22 # +1
О_о. Можно пруф?
eth0 09.09.2014 19:23 # +1
Х.з., поищу ещё, если не забуду, пока навскидку не нашёл.
inkanus-gray 08.09.2014 16:01 # +3
API codehelper.io может возвращать JSON (http://www.codehelper.io/api/ips/?json) и JSONP (http://www.codehelper.io/api/ips/?jsonp&callback=trololo).
Можно выбрать JSONP, чтобы не срать в глобальные переменные.