有没有办法从控制台收集数据到JavaScript?

huangapple go评论59阅读模式
英文:

Is there any way to collect data from console to javascript?

问题

我想从控制台接收输入并处理它以供另一个函数使用。是否有方法可以做到这一点,而不是在将它们记录到控制台之前将这些数据设置为变量?

<html><head><script>

/*

 * 基于JavaScript Client Detecting by viazenetti GmbH (Christian Ludwig)

 */ 

(function (window) {

    {

        var unknown = '-';

        

        // 屏幕

        var screenSize = '';
        if (screen.width) {
            width = (screen.width) ? screen.width : '';
            height = (screen.height) ? screen.height : '';
            screenSize += '' + width + " × " + height;
        }

        // 浏览器

        var nVer = navigator.appVersion;
        var nAgt = navigator.userAgent;
        var browser = navigator.appName;
        var version = '' + parseFloat(navigator.appVersion);
        var majorVersion = parseInt(navigator.appVersion, 10);
        var nameOffset, verOffset, ix;

        // Opera

        if ((verOffset = nAgt.indexOf('Opera')) != -1) {
            browser = 'Opera';
            version = nAgt.substring(verOffset + 6);
            if ((verOffset = nAgt.indexOf('Version')) != -1) {
                version = nAgt.substring(verOffset + 8);
            }
        }

        // Opera Next

        if ((verOffset = nAgt.indexOf('OPR')) != -1) {
            browser = 'Opera';
            version = nAgt.substring(verOffset + 4);
        }

        // MSIE

        else if ((verOffset = nAgt.indexOf('MSIE')) != -1) {
            browser = 'Microsoft Internet Explorer';
            version = nAgt.substring(verOffset + 5);
        }

        // Chrome

        else if ((verOffset = nAgt.indexOf('Chrome')) != -1) {
            browser = 'Chrome';
            version = nAgt.substring(verOffset + 7);
        }

        // Safari

        else if ((verOffset = nAgt.indexOf('Safari')) != -1) {
            browser = 'Safari';
            version = nAgt.substring(verOffset + 7);
            if ((verOffset = nAgt.indexOf('Version')) != -1) {
                version = nAgt.substring(verOffset + 8);
            }
        }

        // Firefox

        else if ((verOffset = nAgt.indexOf('Firefox')) != -1) {
            browser = 'Firefox';
            version = nAgt.substring(verOffset + 8);
        }

        // MSIE 11+

        else if (nAgt.indexOf('Trident/') != -1) {
            browser = 'Microsoft Internet Explorer';
            version = nAgt.substring(nAgt.indexOf('rv:') + 3);
        }

        // 其他浏览器

        else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
            browser = nAgt.substring(nameOffset, verOffset);
            version = nAgt.substring(verOffset + 1);
            if (browser.toLowerCase() == browser.toUpperCase()) {
                browser = navigator.appName;
            }
        }

        // 修整版本字符串

        if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix);
        if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix);
        if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix);
        majorVersion = parseInt('' + version, 10);
        if (isNaN(majorVersion)) {
            version = '' + parseFloat(navigator.appVersion);
            majorVersion = parseInt(navigator.appVersion, 10);
        }

        // 移动版本

        var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);

        // Cookie

        var cookieEnabled = (navigator.cookieEnabled) ? true : false;
        if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) {
            document.cookie = 'testcookie';
            cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false;
        }

        // 系统

        var os = unknown;
        var clientStrings = [

            {s:'Windows 10', r:/(Windows 10.0|Windows NT 10.0)/},
            {s:'Windows 8.1', r:/(Windows 8.1|Windows NT 6.3)/},
            {s:'Windows 8', r:/(Windows 8|Windows NT 6.2)/},
            {s:'Windows 7', r:/(Windows 7|Windows NT 6.1)/},
            {s:'Windows Vista', r:/Windows NT 6.0/},
            {s:'Windows Server 2003', r:/Windows NT 5.2/},
            {s:'Windows XP', r:/(Windows NT 5.1|Windows XP)/},
            {s:'Windows 2000', r:/(Windows NT 5.0|Windows 2000)/},
            {s:'Windows ME', r:/(Win 9x 4.90|Windows ME)/},
            {s:'Windows 98', r:/(Windows 98|Win98)/},
            {s:'Windows 95', r:/(Windows 95|Win95|Windows_95)/},
            {s:'Windows NT 4.0', r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},
            {s:'Windows CE', r:/Windows CE/},
            {s:'Windows 3.11', r:/Win16/},
            {s:'Android', r:/Android/},
            {s:'Open BSD', r:/OpenBSD/},
            {s:'Sun OS', r:/SunOS/},
            {s:'Linux', r:/(Linux|X11)/},
            {s:'iOS', r:/(iPhone|iPad|iPod)/},
            {s:'Mac OS X', r:/Mac OS X/},
            {s:'Mac OS', r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},
            {s:'QNX', r:/QNX/},
            {s:'UNIX', r:/UNIX/},
            {s:'BeOS', r:/BeOS/},
            {s:'OS/2', r:/OS/2/},
            {s:'Search Bot', r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves/Teoma|ia_archiver)/}

        ];

        for (var id in clientStrings) {
            var cs = clientStrings[id];
            if (cs.r.test(nAgt)) {
                os = cs.s;
                break;
            }
        }

        var osVersion = unknown;
        if (/Windows/.test(os)) {
            osVersion = /Windows (.*)/.exec(os)[

<details>
<summary>英文:</summary>

I want to take input from the console and process it for another function.
Is there any way to do that instead of setting those datas as variable before logging them to console.
```html
&lt;html&gt;&lt;head&gt;&lt;script&gt;

/*

 * based on JavaScript Client Detecting by viazenetti GmbH (Christian Ludwig)

 */ 

(function (window) {

    {

        var unknown = &#39;-&#39;;

        

        // screen

        var screenSize = &#39;&#39;;

        if (screen.width) {

            width = (screen.width) ? screen.width : &#39;&#39;;

            height = (screen.height) ? screen.height : &#39;&#39;;

            screenSize += &#39;&#39; + width + &quot; &#215; &quot; + height;

        }

        // browser

        var nVer = navigator.appVersion;

        var nAgt = navigator.userAgent;

        var browser = navigator.appName;

        var version = &#39;&#39; + parseFloat(navigator.appVersion);

        var majorVersion = parseInt(navigator.appVersion, 10);

        var nameOffset, verOffset, ix;

        // Opera

        if ((verOffset = nAgt.indexOf(&#39;Opera&#39;)) != -1) {

            browser = &#39;Opera&#39;;

            version = nAgt.substring(verOffset + 6);

            if ((verOffset = nAgt.indexOf(&#39;Version&#39;)) != -1) {

                version = nAgt.substring(verOffset + 8);

            }

        }

        // Opera Next

        if ((verOffset = nAgt.indexOf(&#39;OPR&#39;)) != -1) {

            browser = &#39;Opera&#39;;

            version = nAgt.substring(verOffset + 4);

        }

        // MSIE

        else if ((verOffset = nAgt.indexOf(&#39;MSIE&#39;)) != -1) {

            browser = &#39;Microsoft Internet Explorer&#39;;

            version = nAgt.substring(verOffset + 5);

        }

        // Chrome

        else if ((verOffset = nAgt.indexOf(&#39;Chrome&#39;)) != -1) {

            browser = &#39;Chrome&#39;;

            version = nAgt.substring(verOffset + 7);

        }

        // Safari

        else if ((verOffset = nAgt.indexOf(&#39;Safari&#39;)) != -1) {

            browser = &#39;Safari&#39;;

            version = nAgt.substring(verOffset + 7);

            if ((verOffset = nAgt.indexOf(&#39;Version&#39;)) != -1) {

                version = nAgt.substring(verOffset + 8);

            }

        }

        // Firefox

        else if ((verOffset = nAgt.indexOf(&#39;Firefox&#39;)) != -1) {

            browser = &#39;Firefox&#39;;

            version = nAgt.substring(verOffset + 8);

        }

        // MSIE 11+

        else if (nAgt.indexOf(&#39;Trident/&#39;) != -1) {

            browser = &#39;Microsoft Internet Explorer&#39;;

            version = nAgt.substring(nAgt.indexOf(&#39;rv:&#39;) + 3);

        }

        // Other browsers

        else if ((nameOffset = nAgt.lastIndexOf(&#39; &#39;) + 1) &lt; (verOffset = nAgt.lastIndexOf(&#39;/&#39;))) {

            browser = nAgt.substring(nameOffset, verOffset);

            version = nAgt.substring(verOffset + 1);

            if (browser.toLowerCase() == browser.toUpperCase()) {

                browser = navigator.appName;

            }

        }

        // trim the version string

        if ((ix = version.indexOf(&#39;;&#39;)) != -1) version = version.substring(0, ix);

        if ((ix = version.indexOf(&#39; &#39;)) != -1) version = version.substring(0, ix);

        if ((ix = version.indexOf(&#39;)&#39;)) != -1) version = version.substring(0, ix);

        majorVersion = parseInt(&#39;&#39; + version, 10);

        if (isNaN(majorVersion)) {

            version = &#39;&#39; + parseFloat(navigator.appVersion);

            majorVersion = parseInt(navigator.appVersion, 10);

        }

        // mobile version

        var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);

        // cookie

        var cookieEnabled = (navigator.cookieEnabled) ? true : false;

        if (typeof navigator.cookieEnabled == &#39;undefined&#39; &amp;&amp; !cookieEnabled) {

            document.cookie = &#39;testcookie&#39;;

            cookieEnabled = (document.cookie.indexOf(&#39;testcookie&#39;) != -1) ? true : false;

        }

        // system

        var os = unknown;

        var clientStrings = [

            {s:&#39;Windows 10&#39;, r:/(Windows 10.0|Windows NT 10.0)/},

            {s:&#39;Windows 8.1&#39;, r:/(Windows 8.1|Windows NT 6.3)/},

            {s:&#39;Windows 8&#39;, r:/(Windows 8|Windows NT 6.2)/},

            {s:&#39;Windows 7&#39;, r:/(Windows 7|Windows NT 6.1)/},

            {s:&#39;Windows Vista&#39;, r:/Windows NT 6.0/},

            {s:&#39;Windows Server 2003&#39;, r:/Windows NT 5.2/},

            {s:&#39;Windows XP&#39;, r:/(Windows NT 5.1|Windows XP)/},

            {s:&#39;Windows 2000&#39;, r:/(Windows NT 5.0|Windows 2000)/},

            {s:&#39;Windows ME&#39;, r:/(Win 9x 4.90|Windows ME)/},

            {s:&#39;Windows 98&#39;, r:/(Windows 98|Win98)/},

            {s:&#39;Windows 95&#39;, r:/(Windows 95|Win95|Windows_95)/},

            {s:&#39;Windows NT 4.0&#39;, r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},

            {s:&#39;Windows CE&#39;, r:/Windows CE/},

            {s:&#39;Windows 3.11&#39;, r:/Win16/},

            {s:&#39;Android&#39;, r:/Android/},

            {s:&#39;Open BSD&#39;, r:/OpenBSD/},

            {s:&#39;Sun OS&#39;, r:/SunOS/},

            {s:&#39;Linux&#39;, r:/(Linux|X11)/},

            {s:&#39;iOS&#39;, r:/(iPhone|iPad|iPod)/},

            {s:&#39;Mac OS X&#39;, r:/Mac OS X/},

            {s:&#39;Mac OS&#39;, r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},

            {s:&#39;QNX&#39;, r:/QNX/},

            {s:&#39;UNIX&#39;, r:/UNIX/},

            {s:&#39;BeOS&#39;, r:/BeOS/},

            {s:&#39;OS/2&#39;, r:/OS\/2/},

            {s:&#39;Search Bot&#39;, r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}

        ];

        for (var id in clientStrings) {

            var cs = clientStrings[id];

            if (cs.r.test(nAgt)) {

                os = cs.s;

                break;

            }

        }

        var osVersion = unknown;

        if (/Windows/.test(os)) {

            osVersion = /Windows (.*)/.exec(os)[1];

            os = &#39;Windows&#39;;

        }

        switch (os) {

            case &#39;Mac OS X&#39;:

                osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1];

                break;

            case &#39;Android&#39;:

                osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1];

                break;

            case &#39;iOS&#39;:

                osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);

                osVersion = osVersion[1] + &#39;.&#39; + osVersion[2] + &#39;.&#39; + (osVersion[3] | 0);

                break;

        }

        

        // flash (you&#39;ll need to include swfobject)

        /* script src=&quot;//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js&quot; */

        var flashVersion = &#39;no check&#39;;

        if (typeof swfobject != &#39;undefined&#39;) {

            var fv = swfobject.getFlashPlayerVersion();

            if (fv.major &gt; 0) {

                flashVersion = fv.major + &#39;.&#39; + fv.minor + &#39; r&#39; + fv.release;

            }

            else  {

                flashVersion = unknown;

            }

        }

    }

    window.jscd = {

        screen: screenSize,

        browser: browser,

        browserVersion: version,

        browserMajorVersion: majorVersion,

        mobile: mobile,

        os: os,

        osVersion: osVersion,

        cookies: cookieEnabled,

        flashVersion: flashVersion

    };

}(this));

console.log(

    &#39;OS: &#39; + jscd.os +&#39; &#39;+ jscd.osVersion + &#39;\n&#39; +

    &#39;Browser: &#39; + jscd.browser +&#39; &#39;+ jscd.browserMajorVersion +

      &#39; (&#39; + jscd.browserVersion + &#39;)\n&#39; + 

    &#39;Mobile: &#39; + jscd.mobile + &#39;\n&#39; +

    &#39;Flash: &#39; + jscd.flashVersion + &#39;\n&#39; +

    &#39;Cookies: &#39; + jscd.cookies + &#39;\n&#39; +

    &#39;Screen Size: &#39; + jscd.screen + &#39;\n\n&#39; +

    &#39;Full User Agent: &#39; + navigator.userAgent

);

// http://stackoverflow.com/a/3922353/846193

/* MAC Key Binding on Browsers

Firefox: 224

Opera: 17

WebKit (Safari/Chrome): 91 (Left Apple) or 93 (Right Apple)

*/

var isOpera = !!window.opera || navigator.userAgent.indexOf(&#39; OPR/&#39;) &gt;= 0;

    // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)

var isFirefox = typeof InstallTrigger !== &#39;undefined&#39;;   // Firefox 1.0+

var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf(&#39;Constructor&#39;) &gt; 0;

    // At least Safari 3+: &quot;[object HTMLElementConstructor]&quot;

var isChrome = !!window.chrome &amp;&amp; !isOpera;              // Chrome 1+

var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6

&lt;/script&gt;&lt;/head&gt;

&lt;body bgcolor=&quot;lightgray&quot;&gt;

Output is in console.
Check them through developers mode

&lt;/body&gt;&lt;/html&gt;

I tried every possible ways as solutions and read multiple blogs but none of them giving efficient answer in this case. Especially when it comes to JavaScript console.

I can't set them as variable before this script completely compiled. So is there any way to collect those datas from console.

[ The given code logs data about user's device specifications to console.
eg: Operating system, Browser, is a bot?, Is Cookies enabled? ]

答案1

得分: 0

你可以通过提示框轻松实现如下:

const input = prompt("What's your name?");
console.log(input);
英文:

You can do so via prompt as easy as:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

const input = prompt(&quot;What&#39;s your name?&quot;);
console.log(input);

<!-- end snippet -->

答案2

得分: 0

以下是代码中需要打印到控制台的部分:

console.log(
'OS: ' + jscd.os + ' ' + jscd.osVersion + '\n' +
'Browser: ' + jscd.browser + ' ' + jscd.browserMajorVersion +
' (' + jscd.browserVersion + ')\n' + 
'Mobile: ' + jscd.mobile + '\n' +
'Flash: ' + jscd.flashVersion + '\n' +
'Cookies: ' + jscd.cookies + '\n' +
'Screen Size: ' + jscd.screen + '\n\n' +
'Full User Agent: ' + navigator.userAgent
);

这些内容将在控制台输出。如果您想在 JavaScript 中重用这些值,只需引用相应的变量。例如,操作系统存储在JavaScript变量jscd.os中,其版本存储在JavaScript变量jscd.osVersion中。

英文:

These lines in the code you are presenting:

console.log(
&#39;OS: &#39; + jscd.os +&#39; &#39;+ jscd.osVersion + &#39;\n&#39; +
&#39;Browser: &#39; + jscd.browser +&#39; &#39;+ jscd.browserMajorVersion +
&#39; (&#39; + jscd.browserVersion + &#39;)\n&#39; + 
&#39;Mobile: &#39; + jscd.mobile + &#39;\n&#39; +
&#39;Flash: &#39; + jscd.flashVersion + &#39;\n&#39; +
&#39;Cookies: &#39; + jscd.cookies + &#39;\n&#39; +
&#39;Screen Size: &#39; + jscd.screen + &#39;\n\n&#39; +
&#39;Full User Agent: &#39; + navigator.userAgent
);

Are those who print the output in the console. So if you want to reuse any of this values in Js you just need to reference to the matching variable. So for example: OS is stored in the javascript variable jscd.os and its version is in the javascript variable jscd.osVersion

huangapple
  • 本文由 发表于 2023年2月8日 23:38:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/75388157.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定