ฉันเห็นด้วยว่าเราควรทดสอบความสามารถ แต่ยากที่จะหาคำตอบง่ายๆว่า "" เบราว์เซอร์สมัยใหม่ "รองรับความสามารถใดบ้าง แต่ไม่ใช่" เบราว์เซอร์รุ่นเก่า "
ดังนั้นฉันจึงเปิดเบราว์เซอร์จำนวนมากและตรวจสอบ Modernizer โดยตรง ฉันเพิ่มความสามารถบางอย่างที่ฉันต้องการอย่างแน่นอนจากนั้นฉันก็เพิ่ม "inputtypes.color" เพราะดูเหมือนว่าจะครอบคลุมเบราว์เซอร์หลัก ๆ ทั้งหมดที่ฉันสนใจ: Chrome, Firefox, Opera, Edge ... และไม่ใช่ IE11 ตอนนี้ฉันสามารถแนะนำผู้ใช้ได้อย่างนุ่มนวลว่าจะดีกว่าด้วย Chrome / Opera / Firefox / Edge
นี่คือสิ่งที่ฉันใช้ - คุณสามารถแก้ไขรายการสิ่งที่จะทดสอบสำหรับกรณีเฉพาะของคุณได้ ส่งกลับเท็จหากความสามารถใด ๆ หายไป
public CheckBrowser(): boolean
{
let tests = ["csstransforms3d", "canvas", "flexbox", "webgl", "inputtypes.color"];
for (let i = 0; i < tests.length; i++)
{
if (!ObjectUtils.GetProperty(Modernizr, tests[i]))
{
console.error("Browser Capability missing: " + tests[i]);
return false;
}
}
return true;
}
และนี่คือเมธอด GetProperty ที่จำเป็นสำหรับ "inputtypes.color"
public static GetProperty(target: any, propertyName: string): any
{
if (!(target && propertyName))
{
return undefined;
}
var o = target;
propertyName = propertyName.replace(/\[(\w+)\]/g, ".$1");
propertyName = propertyName.replace(/^\./, "");
var a = propertyName.split(".");
while (a.length)
{
var n = a.shift();
if (n in o)
{
o = o[n];
if (o == null)
{
return undefined;
}
}
else
{
return undefined;
}
}
return o;
}