Некоторый код запускается внутри воркера и работает с canvas'ом. Я сделал возможность вызывать методы и устанавливать параметры Context2D с помощью пересылки сообщений (postMessage) из воркера и обратно.
И мне нужно заблокировать именно код, который работает внутри воркера. Основной поток пусть остаётся.
Ок. Мне надо внутри Web Worker максимально совместимо реализовать Canvas Context2D API. Всё шло хорошо, пока я не столкнулся с получением пикселей. В реализации сейчас callback.
P.S. Для полной поддержки стоит посмотреть на Dojox: там и canvas, и vml, и svg, и flash, и java, и silverlight. С javascript api. Но вряд ли я такое буду делать
Продолжу мысль про песочницу.
Скрипт может лишь использовать 2D- и WebGL-контексты canvas-а, плюс устанавливать обработчики событий на него. Об этом я уже говорил. Плюс возможности типа «проиграть такой-то звук», открыть такое-то видео поверх canvasa (либо транслировать кадры на canvas).
Продолжу мысль про CSRF.
Самое грустное, что запросы игры никак не отличить от легитимных запросов юзера. Потому внутри песочницы делается как-то так:
(function(self){
var xhr = self.XMLHTTPRequest;
self.XMLHTTPRequest = function(){
var x = new xhr();
x.setRequestHeader('X-Requested-With', 'html5engine-ajax');
return x;
}
})(self);
Ну и плюс подменить setRequestHeader, чтобы скрипт не мог обратно заголовок переделать. Нехорошо конечно системные объекты патчить, но по другому не получится.
Честно говоря, IE6-7-8 вообще вряд ли будет поддерживаться. Просто потому что это куча дополнительных хаков, тормозов и костылей. Ради браузеров с очень затухающей популярностью. Я могу заменить canvas на VML, audio и video на bgsound и embed. Но зачем?
Согласен, это минус, но он быстро перестанет быть актуален.
Чёткое понимание есть.
>> Уверены, что сможете реализовать? Плюс, не понимаю, зачем это нужно.
Уже реализовал. Зачем? Ставит какой-нибудь известный и хороший портал себе какую-нибудь игру на сайт. А игра незаметно подменяет форму входа и перехватывает пароли. Вряд ли вам это понравится. Я предлагаю дать игре только те возможности, которые ей реально нужны: рисовать, работать со звуком, видео…
Вариант 2: тщательно контролировать исходники игр. Кто будет контролировать? За это сайт ещё и деньги должен контролёрам платить. А вдруг что-то пропустят?
>> лишние тормоза
Ничего не мешает импортировать нужные классы.
>> Ерунда какая-то.
Опять же к вопросу о безопасности. Игра — загружена на ваш сайт. И может выполнять произвольные ajax-запросы к вашему сайту. Например — повысить рейтинг самой себя от имени юзера, который её открыл. Это называется атака типа CSRF.
var isLightGray = isWhited(r,g,b) && isGray(r,g,b);