2014-11-18 2 views
0

Я пытаюсь посмотреть, загружен ли страница браузера в режимах смешивания. Например, есть ли свойство, которое я могу проверить, чтобы при загрузке в браузере, таком как IE, он возвращал false или undefined или мне нужно сделать это, проверив, какой браузер он использует.Есть ли способ обнаружить поддержку режимов смешивания?

Blending режимы, как в полотне режимы наложения

http://caniuse.com/#feat=canvas-blending

+1

Что именно вы подразумеваете под «режимами смешивания»? – jfriend00

+0

Добавлено редактирование для уточнения. Но я имею в виду режимы смешивания холста http://caniuse.com/#feat=canvas-blending – Siva

ответ

2

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

// Is canvas supported? Test by seeing if HTMLCanvasElement is 'truthy' 

var BrowserAllowsCanvas = !!window.HTMLCanvasElement; 

Но Blending - это присвоение свойства, а не метод/свойство, которое вы можете проверить как null.

Чтобы установить режим смешивания вы назначаете Blend-режим context.globalCompositeOperation

context.globalCompositeOperation='multiply'; 

Так, пожалуй, самый простой тест для купажа попытаться установить context.globalCompositeOperation на правильный режим смешивания, а затем, если это назначение застревают проверить.

function CanvasAllowsBlending(){ 
    var hasBlending=false; 
    ctx.save(); 
    ctx.globalCompositeOperation='multiply'; 
    var hasBlending=(ctx.globalCompositeOperation=='multiply'); 
    ctx.restore(); 
    return(hasBlending); 
} 

[Обновление: Новые режимы смешивания, которые были добавлены к холсту - вызывает проблему]

Как @Kaiido говорит here, некоторые из вновь добавленного набора режимов смешивания (в некоторых браузерах) будет ложно указывать поддержку, когда на самом деле нет поддержки. Поэтому, пока браузеры не исправят эту ошибку, вы можете применить композиционный и затем пиксельный тест, чтобы убедиться, что он действительно вступил в силу.

+1

Это потрясающе! Спасибо – Siva

+1

Это будет работать в большинстве случаев, за исключением Safari, где некоторые режимы смешивания («оттенок», «насыщенность», «цвет», «светимость») будут приниматься, но фактически не поддерживаться. [В этом ответе] (http://stackoverflow.com/a/33956608/3702797) вы можете найти способ действительно протестировать каждый режим globalCompositeOperation. – Kaiido

+0

@Kaiido. Спасибо за обновление. Новые режимы смешивания не были добавлены во время моего ответа, поэтому это обновление полезно. :-) – markE