【问题标题】:Django views detect if client uses webgl compatible browserDjango 视图检测客户端是否使用兼容 webgl 的浏览器
【发布时间】:2017-05-20 00:57:56
【问题描述】:

是否有任何选项可以在视图功能中检测用户来自的浏览器是否与 webGL 兼容?

【问题讨论】:

    标签: django python-2.7 django-views webgl


    【解决方案1】:

    检测 WebGL 是在前端使用 JavaScript(参见 Proper way to detect WebGL support?),所以我认为没有办法在 Django 视图中直接在后端执行此操作。

    您可以做的是在用户访问的第一个页面上使用 JavaScript 执行检测,并使用 AJAX 将结果存储在服务器端变量中,您可以在后续请求中使用该变量来决定是否使用 WebGL 功能。

    【讨论】:

    • 有没有办法通过请求提供这些信息?与请求提供 GET、POST、COOKIES 等相同。所以它也提供 WEBGLCOMPATIBLE 或类似的称为变量
    • @Ignasi 我不知道。
    • 非常感谢@voodoo-burger!
    【解决方案2】:

    扩展 voodoo 的答案,这里是用于快速确定客户端是否支持 webgl 的 javascript

        var canvas = document.getElementById("canvas");
        var names = ["webgl", "experimental-webgl", "webkit-3d", "mozwebgl"];
        var webgl_supported = false;
    
        for(var i in names) {
            try {
                gl = canvas.getContext(names[i], { });
    
                if (gl && typeof gl.getParameter == "function") {
                    webgl_supported = true;
                    break;
                }
            } catch(e) { }
        }
    
       var xmlhttp = new XMLHttpRequest();
       xmlhttp.open("POST", "/webgl_enabled_handler");
       xmlhttp.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
       xmlhttp.send(JSON.stringify({webgl_enabled: webgl_supported }));
    

    这假设在您的 html 页面/模板中有一个 id 为“canvas”的 canvas 元素。

    页面加载后,生成的 json 将作为 POST 请求发送到 django

    不幸的是,我怀疑是否有办法通过来自 django 的一般 GET 请求来确定 webgl 支持

    【讨论】:

    • 仅供参考:不需要“webkil-3d”和“mozwebgl”。就像 2010 年一样,它们已经存在了几个月,并且早已不复存在。同样,“experimental-webgl”此时仅由 Edge 使用,因为它的 WebGL 实现仍然不符合规范。
    猜你喜欢
    • 2012-12-23
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多