humanemulator.net — справка.
Продукт, демо и покупка — на
хуманэмулятор.рф
|
Демо
|
Купить
|
API
|
лог изменений
set_webgl_params
set_webgl_params($webgl_params); - задать WebGL параметры (Доступна с версии 7.0.63)Функция на вход принимает параметры:
- VENDOR = "";
- RENDERER = "";
- VERSION = "";
- SHADING_LANGUAGE_VERSION = "";
- UNMASKED_VENDOR = "";
- UNMASKED_RENDERER = "";
- MAX_VERTEX_ATTRIBS = "";
- MAX_VERTEX_UNIFORM_VECTORS = "";
- MAX_VERTEX_TEXTURE_IMAGE_UNITS = "";
- MAX_VARYING_VECTORS = "";
- MAX_VERTEX_UNIFORM_COMPONENTS = "";
- MAX_VERTEX_UNIFORM_BLOCKS = "";
- MAX_VERTEX_OUTPUT_COMPONENTS = "";
- MAX_VARYING_COMPONENTS = "";
- MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = "";
- MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = "";
- MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = "";
- ALIASED_LINE_WIDTH_RANGE = "float32array";
- ALIASED_POINT_SIZE_RANGE = "float32array";
- MAX_FRAGMENT_UNIFORM_VECTORS = "";
- MAX_TEXTURE_IMAGE_UNITS = "";
- MAX_FRAGMENT_UNIFORM_COMPONENTS = "";
- MAX_FRAGMENT_UNIFORM_BLOCKS = "";
- MAX_FRAGMENT_INPUT_COMPONENTS = "";
- MIN_PROGRAM_TEXEL_OFFSET = "";
- MAX_PROGRAM_TEXEL_OFFSET = "";
- MAX_DRAW_BUFFERS = "";
- MAX_COLOR_ATTACHMENTS = "";
- MAX_SAMPLES = "";
- RED_BITS = "";
- GREEN_BITS = "";
- BLUE_BITS = "";
- ALPHA_BITS = "";
- DEPTH_BITS = "";
- STENCIL_BITS = "";
- MAX_RENDERBUFFER_SIZE = "";
- MAX_VIEWPORT_DIMS = "";
- MAX_TEXTURE_SIZE = "";
- MAX_CUBE_MAP_TEXTURE_SIZE = "";
- MAX_COMBINED_TEXTURE_IMAGE_UNITS = "";
- MAX_TEXTURE_MAX_ANISOTROPY_EXT = "";
- MAX_3D_TEXTURE_SIZE = "";
- MAX_ARRAY_TEXTURE_LAYERS = "";
- MAX_TEXTURE_LOD_BIAS = "";
- MAX_UNIFORM_BUFFER_BINDINGS = "";
- MAX_UNIFORM_BLOCK_SIZE = "";
- UNIFORM_BUFFER_OFFSET_ALIGNMENT = "";
- MAX_COMBINED_UNIFORM_BLOCKS = "";
- MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = "";
- MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = "";
Пример использования
<?php // Scenario: Demonstrates how to set custom WebGL parameters to simulate different graphics hardware configurations // Path to the init.php file for connecting to the XHE API $xhe_host = "localhost:7010"; if (!isset($path)){ // Path to the init.php file for connecting to the XHE API $path = "../../../Templates/init.php"; // Including init.php grants access to all classes and functionality for working with the XHE API require($path); } // The following code demonstrates the usage of the set_webgl_params function // Enable WebGL first WEB::$browser->enable_java_script(true); // Create WebGL params object $webgl_params = new XHEWebGLParams(); // Set basic WebGL parameters $webgl_params->VENDOR = "NVIDIA Corporation"; $webgl_params->RENDERER = "GeForce RTX 3070/PCIe/SSE2"; $webgl_params->VERSION = "(3.3.0 NVIDIA 470.57.02)"; $webgl_params->SHADING_LANGUAGE_VERSION = "(3.30 NVIDIA via Cg compiler)"; $webgl_params->UNMASKED_VENDOR = "NVIDIA Corporation"; $webgl_params->UNMASKED_RENDERER = "GeForce RTX 3070/PCIe/SSE2"; $webgl_params->MAX_VERTEX_ATTRIBS = "16"; $webgl_params->MAX_VERTEX_UNIFORM_VECTORS = "253"; $webgl_params->MAX_VERTEX_TEXTURE_IMAGE_UNITS = "4"; $webgl_params->MAX_VARYING_VECTORS = "9"; $webgl_params->MAX_VERTEX_UNIFORM_COMPONENTS = "16380"; $webgl_params->MAX_VERTEX_UNIFORM_BLOCKS = "12"; $webgl_params->MAX_VERTEX_OUTPUT_COMPONENTS = "120"; $webgl_params->MAX_VARYING_COMPONENTS = "120"; $webgl_params->MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = "121"; $webgl_params->MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = "4"; $webgl_params->MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = "4"; $webgl_params->ALIASED_LINE_WIDTH_RANGE = "float32array"; $webgl_params->ALIASED_POINT_SIZE_RANGE = "float32array"; $webgl_params->MAX_FRAGMENT_UNIFORM_VECTORS = "221"; $webgl_params->MAX_TEXTURE_IMAGE_UNITS = "17"; $webgl_params->MAX_FRAGMENT_UNIFORM_COMPONENTS = "17"; $webgl_params->MAX_FRAGMENT_UNIFORM_BLOCKS = "13"; $webgl_params->MAX_FRAGMENT_INPUT_COMPONENTS = "121"; $webgl_params->MIN_PROGRAM_TEXEL_OFFSET = "-9"; $webgl_params->MAX_PROGRAM_TEXEL_OFFSET = "8"; $webgl_params->MAX_DRAW_BUFFERS = "9"; $webgl_params->MAX_COLOR_ATTACHMENTS = "9"; $webgl_params->MAX_SAMPLES = "9"; $webgl_params->RED_BITS = "9"; $webgl_params->GREEN_BITS = "9"; $webgl_params->BLUE_BITS = "9"; $webgl_params->ALPHA_BITS = "9"; $webgl_params->DEPTH_BITS = "32"; $webgl_params->STENCIL_BITS = "8"; $webgl_params->MAX_RENDERBUFFER_SIZE = "32768"; $webgl_params->MAX_VIEWPORT_DIMS = "new Int32Array([16385,16385])"; $webgl_params->MAX_TEXTURE_SIZE = "32768"; $webgl_params->MAX_CUBE_MAP_TEXTURE_SIZE = "32768"; $webgl_params->MAX_COMBINED_TEXTURE_IMAGE_UNITS = "32768"; $webgl_params->MAX_TEXTURE_MAX_ANISOTROPY_EXT = "32"; $webgl_params->MAX_3D_TEXTURE_SIZE = "4096"; $webgl_params->MAX_ARRAY_TEXTURE_LAYERS = "4096"; $webgl_params->MAX_TEXTURE_LOD_BIAS = "4"; $webgl_params->MAX_UNIFORM_BUFFER_BINDINGS = "32"; $webgl_params->MAX_UNIFORM_BLOCK_SIZE = "32768"; $webgl_params->UNIFORM_BUFFER_OFFSET_ALIGNMENT = "512"; $webgl_params->MAX_COMBINED_UNIFORM_BLOCKS = "32"; $webgl_params->MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = ""; $webgl_params->MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = "512678"; $result = WEB::$browser->set_webgl_params($webgl_params); // Display the result if ($result) { echo "\n\nSuccessfully set WebGL parameters"; } else { echo "\n\nFailed to set WebGL parameters"; } // Navigate to test WebGL $url2 = "https://get.webgl.org"; WEB::$browser->navigate($url2); WEB::$browser->wait_js(5); echo "\n\nNavigated to: " . $url2; echo "\nWebGL parameters should be applied"; // Reset by setting empty params $webgl_params2 = new XHEWebGLParams(); $result2 = WEB::$browser->set_webgl_params($webgl_params2); echo "\n\nReset WebGL params: " . ($result2 ? "Success" : "Failed"); // Navigate one final time WEB::$browser->navigate($url2); WEB::$browser->wait_js(3); echo "\n\nNavigated to: " . $url2; echo "\nWebGL parameters reset to default"; // Quit the application WINDOW::$app->quit(); ?>
# Additional paths import sys sys.path.insert(0, '../../../Templates PY/') xhe_host = "127.0.0.1:3035" from xweb_human_emulator import * # начало echo("<hr><font color=blue>browser.xxxxxxxxx</font><hr>") # params webGlParams=XHEWebGLParams(); #////////////////////////// WebGL Context Info webGlParams.VENDOR="WebKit"; webGlParams.RENDERER="WebKit WebGL"; webGlParams.VERSION="WebGL 1.0 (OpenGL ES 2.0 Chromium)"; webGlParams.SHADING_LANGUAGE_VERSION="WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)"; webGlParams.UNMASKED_VENDOR="Google Inc."; webGlParams.UNMASKED_RENDERER="ANGLE (NVIDIA GeForce GT 430 Direct3D9Ex vs_3_0 ps_3_0)"; #////////////////////////// Vertex Shader webGlParams.MAX_VERTEX_ATTRIBS = "16"; webGlParams.MAX_VERTEX_UNIFORM_VECTORS = "253"; webGlParams.MAX_VERTEX_TEXTURE_IMAGE_UNITS = "4"; webGlParams.MAX_VARYING_VECTORS = "9"; webGlParams.MAX_VERTEX_UNIFORM_COMPONENTS = "16380"; webGlParams.MAX_VERTEX_UNIFORM_BLOCKS = "12"; webGlParams.MAX_VERTEX_OUTPUT_COMPONENTS = "120"; webGlParams.MAX_VARYING_COMPONENTS = "120"; #////////////////////////// Transform Feedback webGlParams.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = "121"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = "4"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = "4"; #////////////////////////// Rasterizer webGlParams.ALIASED_LINE_WIDTH_RANGE = "float32array"; webGlParams.ALIASED_POINT_SIZE_RANGE = "float32array"; #////////////////////////// Fragment Shader webGlParams.MAX_FRAGMENT_UNIFORM_VECTORS = "221"; webGlParams.MAX_TEXTURE_IMAGE_UNITS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_COMPONENTS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_BLOCKS = "13"; webGlParams.MAX_FRAGMENT_INPUT_COMPONENTS = "121"; webGlParams.MIN_PROGRAM_TEXEL_OFFSET = "-9"; webGlParams.MAX_PROGRAM_TEXEL_OFFSET = "8"; #////////////////////////// Framebuffer webGlParams.MAX_DRAW_BUFFERS = "9"; webGlParams.MAX_COLOR_ATTACHMENTS = "9"; webGlParams.MAX_SAMPLES = "9"; webGlParams.RED_BITS = "9"; webGlParams.GREEN_BITS = "9"; webGlParams.BLUE_BITS = "9"; webGlParams.ALPHA_BITS = "9"; webGlParams.DEPTH_BITS = "32"; webGlParams.STENCIL_BITS = "8"; webGlParams.MAX_RENDERBUFFER_SIZE = "32768"; webGlParams.MAX_VIEWPORT_DIMS = "new Int32Array([16385,16385])"; #////////////////////////// Textures webGlParams.MAX_TEXTURE_SIZE = "32768"; webGlParams.MAX_CUBE_MAP_TEXTURE_SIZE = "32768"; webGlParams.MAX_COMBINED_TEXTURE_IMAGE_UNITS = "32768"; webGlParams.MAX_TEXTURE_MAX_ANISOTROPY_EXT = "32"; webGlParams.MAX_3D_TEXTURE_SIZE = "4096"; webGlParams.MAX_ARRAY_TEXTURE_LAYERS = "4096"; webGlParams.MAX_TEXTURE_LOD_BIAS = "4"; #////////////////////////// Uniform Buffers webGlParams.MAX_UNIFORM_BUFFER_BINDINGS = "32"; webGlParams.MAX_UNIFORM_BLOCK_SIZE = "32768"; webGlParams.UNIFORM_BUFFER_OFFSET_ALIGNMENT = "512"; webGlParams.MAX_COMBINED_UNIFORM_BLOCKS = "32"; webGlParams.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = ""; webGlParams.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = "512678"; echo("1. Зададим WebGL параметры: "); echo(browser.set_webgl_params(webGlParams),"\n"); # 2 echo("2 Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl"),"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); sleep(10); # 3 echo("3. Отключим кастомные WebGL параметры: "); echo(browser.set_webgl_params(XHEWebGLParams()),"<br>"); # 4 echo("4. Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl"),"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); # конец echo("<hr><br>") # Quit app.quit()
#region using using System; using System.Diagnostics; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text; using System.Threading; using XHE; using XHE.XHE_DOM; using XHE.XHE_System; using XHE.XHE_Window; using XHE.XHE_Web; #endregion class Program:XHEScript { static void Main(string[] args) { // init XHE server = "localhost:7010"; InitXHE(); // начало echo("<hr><font color=blue>browser.set_app_info</font><hr>"); // params var webGlParams=new XHEWebGLParams(); ////////////////////////// WebGL Context Info webGlParams.VENDOR="WebKit"; webGlParams.RENDERER="WebKit WebGL"; webGlParams.VERSION="WebGL 1.0 (OpenGL ES 2.0 Chromium)"; webGlParams.SHADING_LANGUAGE_VERSION="WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)"; webGlParams.UNMASKED_VENDOR="Google Inc."; webGlParams.UNMASKED_RENDERER="ANGLE (NVIDIA GeForce GT 430 Direct3D9Ex vs_3_0 ps_3_0)"; ////////////////////////// Vertex Shader webGlParams.MAX_VERTEX_ATTRIBS = "16"; webGlParams.MAX_VERTEX_UNIFORM_VECTORS = "253"; webGlParams.MAX_VERTEX_TEXTURE_IMAGE_UNITS = "4"; webGlParams.MAX_VARYING_VECTORS = "9"; webGlParams.MAX_VERTEX_UNIFORM_COMPONENTS = "16380"; webGlParams.MAX_VERTEX_UNIFORM_BLOCKS = "12"; webGlParams.MAX_VERTEX_OUTPUT_COMPONENTS = "120"; webGlParams.MAX_VARYING_COMPONENTS = "120"; ////////////////////////// Transform Feedback webGlParams.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = "121"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = "4"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = "4"; ////////////////////////// Rasterizer webGlParams.ALIASED_LINE_WIDTH_RANGE = "float32array"; webGlParams.ALIASED_POINT_SIZE_RANGE = "float32array"; ////////////////////////// Fragment Shader webGlParams.MAX_FRAGMENT_UNIFORM_VECTORS = "221"; webGlParams.MAX_TEXTURE_IMAGE_UNITS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_COMPONENTS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_BLOCKS = "13"; webGlParams.MAX_FRAGMENT_INPUT_COMPONENTS = "121"; webGlParams.MIN_PROGRAM_TEXEL_OFFSET = "-9"; webGlParams.MAX_PROGRAM_TEXEL_OFFSET = "8"; ////////////////////////// Framebuffer webGlParams.MAX_DRAW_BUFFERS = "9"; webGlParams.MAX_COLOR_ATTACHMENTS = "9"; webGlParams.MAX_SAMPLES = "9"; webGlParams.RED_BITS = "9"; webGlParams.GREEN_BITS = "9"; webGlParams.BLUE_BITS = "9"; webGlParams.ALPHA_BITS = "9"; webGlParams.DEPTH_BITS = "32"; webGlParams.STENCIL_BITS = "8"; webGlParams.MAX_RENDERBUFFER_SIZE = "32768"; webGlParams.MAX_VIEWPORT_DIMS = "new Int32Array([16385,16385])"; ////////////////////////// Textures webGlParams.MAX_TEXTURE_SIZE = "32768"; webGlParams.MAX_CUBE_MAP_TEXTURE_SIZE = "32768"; webGlParams.MAX_COMBINED_TEXTURE_IMAGE_UNITS = "32768"; webGlParams.MAX_TEXTURE_MAX_ANISOTROPY_EXT = "32"; webGlParams.MAX_3D_TEXTURE_SIZE = "4096"; webGlParams.MAX_ARRAY_TEXTURE_LAYERS = "4096"; webGlParams.MAX_TEXTURE_LOD_BIAS = "4"; ////////////////////////// Uniform Buffers webGlParams.MAX_UNIFORM_BUFFER_BINDINGS = "32"; webGlParams.MAX_UNIFORM_BLOCK_SIZE = "32768"; webGlParams.UNIFORM_BUFFER_OFFSET_ALIGNMENT = "512"; webGlParams.MAX_COMBINED_UNIFORM_BLOCKS = "32"; webGlParams.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = ""; webGlParams.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = "512678"; echo("1. Зададим WebGL параметры: "); echo(browser.set_webgl_params(webGlParams)+"\n"); // 2 echo("2 Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl")+"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); sleep(10); // 3 echo("3. Отключим кастомные WebGL параметры: "); echo(browser.set_webgl_params(new XHEWebGLParams())+"<br>"); // 4 echo("4. Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl")+"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); // конец echo("\n\n"); app.quit(); } }
// подключим функциональные объекты, если еще не подключен xhe_host="127.0.0.1:3035"; echo=require("../../../Templates JS/init.js"); XHEWebGLParams=require("../../../Templates JS/Objects/xhe_webgl_params.js"); // начало echo("<hr><font color=blue>browser.send_get_query</font><hr>"); // params var webGlParams=new XHEWebGLParams(); ////////////////////////// WebGL Context Info webGlParams.VENDOR="WebKit"; webGlParams.RENDERER="WebKit WebGL"; webGlParams.VERSION="WebGL 1.0 (OpenGL ES 2.0 Chromium)"; webGlParams.SHADING_LANGUAGE_VERSION="WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)"; webGlParams.UNMASKED_VENDOR="Google Inc."; webGlParams.UNMASKED_RENDERER="ANGLE (NVIDIA GeForce GT 430 Direct3D9Ex vs_3_0 ps_3_0)"; ////////////////////////// Vertex Shader webGlParams.MAX_VERTEX_ATTRIBS = "16"; webGlParams.MAX_VERTEX_UNIFORM_VECTORS = "253"; webGlParams.MAX_VERTEX_TEXTURE_IMAGE_UNITS = "4"; webGlParams.MAX_VARYING_VECTORS = "9"; webGlParams.MAX_VERTEX_UNIFORM_COMPONENTS = "16380"; webGlParams.MAX_VERTEX_UNIFORM_BLOCKS = "12"; webGlParams.MAX_VERTEX_OUTPUT_COMPONENTS = "120"; webGlParams.MAX_VARYING_COMPONENTS = "120"; ////////////////////////// Transform Feedback webGlParams.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = "121"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = "4"; webGlParams.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = "4"; ////////////////////////// Rasterizer webGlParams.ALIASED_LINE_WIDTH_RANGE = "float32array"; webGlParams.ALIASED_POINT_SIZE_RANGE = "float32array"; ////////////////////////// Fragment Shader webGlParams.MAX_FRAGMENT_UNIFORM_VECTORS = "221"; webGlParams.MAX_TEXTURE_IMAGE_UNITS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_COMPONENTS = "17"; webGlParams.MAX_FRAGMENT_UNIFORM_BLOCKS = "13"; webGlParams.MAX_FRAGMENT_INPUT_COMPONENTS = "121"; webGlParams.MIN_PROGRAM_TEXEL_OFFSET = "-9"; webGlParams.MAX_PROGRAM_TEXEL_OFFSET = "8"; ////////////////////////// Framebuffer webGlParams.MAX_DRAW_BUFFERS = "9"; webGlParams.MAX_COLOR_ATTACHMENTS = "9"; webGlParams.MAX_SAMPLES = "9"; webGlParams.RED_BITS = "9"; webGlParams.GREEN_BITS = "9"; webGlParams.BLUE_BITS = "9"; webGlParams.ALPHA_BITS = "9"; webGlParams.DEPTH_BITS = "32"; webGlParams.STENCIL_BITS = "8"; webGlParams.MAX_RENDERBUFFER_SIZE = "32768"; webGlParams.MAX_VIEWPORT_DIMS = "new Int32Array([16385,16385])"; ////////////////////////// Textures webGlParams.MAX_TEXTURE_SIZE = "32768"; webGlParams.MAX_CUBE_MAP_TEXTURE_SIZE = "32768"; webGlParams.MAX_COMBINED_TEXTURE_IMAGE_UNITS = "32768"; webGlParams.MAX_TEXTURE_MAX_ANISOTROPY_EXT = "32"; webGlParams.MAX_3D_TEXTURE_SIZE = "4096"; webGlParams.MAX_ARRAY_TEXTURE_LAYERS = "4096"; webGlParams.MAX_TEXTURE_LOD_BIAS = "4"; ////////////////////////// Uniform Buffers webGlParams.MAX_UNIFORM_BUFFER_BINDINGS = "32"; webGlParams.MAX_UNIFORM_BLOCK_SIZE = "32768"; webGlParams.UNIFORM_BUFFER_OFFSET_ALIGNMENT = "512"; webGlParams.MAX_COMBINED_UNIFORM_BLOCKS = "32"; webGlParams.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = ""; webGlParams.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = "512678"; echo("1. Зададим WebGL параметры: "); echo(browser.set_webgl_params(webGlParams)+"\n"); // 2 echo("2 Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl")+"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); app.sleep(10); // 3 echo("3. Отключим кастомные WebGL параметры: "); echo(browser.set_webgl_params(new XHEWebGLParams())+"<br>"); // 4 echo("4. Перейдем на страницу для детектирования браузера : "); echo(browser.navigate("https://browserleaks.com/webgl")+"<br>"); td.set_focus_by_inner_text("WebGL Report Hash", 0); // конец echo("\n"); // Quit app.quit();
=============================================
Browser Объекты DOM System Vision Web Window
=============================================
если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
.