Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端如何阻止JS代码执行?_Javascript - Fatal编程技术网

Javascript 客户端如何阻止JS代码执行?

Javascript 客户端如何阻止JS代码执行?,javascript,Javascript,我有一些最终运行的JS代码——我不知道出了什么问题。 例如,在某些情况下,代码是在客户端浏览器中执行的,有时不是。我们有一个服务器,指示客户端是否通过浏览器访问服务器。2/15的客户没有完成工作 下面是代码示例 __zScriptInstalled = false; function __zMainFunction(w,d){ var expire_time = 24*60*60; var __zLink = 'https://tracker.com/track/4c72663c8c?'; _

我有一些最终运行的JS代码——我不知道出了什么问题。 例如,在某些情况下,代码是在客户端浏览器中执行的,有时不是。我们有一个服务器,指示客户端是否通过浏览器访问服务器。2/15的客户没有完成工作

下面是代码示例

__zScriptInstalled = false;
function __zMainFunction(w,d){

var expire_time = 24*60*60;
var __zLink = 'https://tracker.com/track/4c72663c8c?';
__zLink += '&visitor_uuid=7815528f-5631-4c10-a8e4-5c0ade253e3b';
var __zWebsitehash = '4c72663c8c';
var click_padding = 2;
var clicks_limit = 1;


var __zSelector = "*";


function __zGetCookie(name, default_value=undefined) {
    name += '_' + __zWebsitehash;
    var matches = document.cookie.match(new RegExp(
      "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ))
    return matches ? decodeURIComponent(matches[1]) : default_value
}

function __zSetCookie(name, value, props) {
    name += '_' + __zWebsitehash;
    props = props || {}
    var exp = props.expires

    if (typeof exp == "number" && exp) {
        var d = new Date()
        d.setTime(d.getTime() + exp*1000)
        exp = props.expires = d
    }

    if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
    value = encodeURIComponent(value)
    var updatedCookie = name + "=" + value

    for(var propName in props){
        updatedCookie += "; " + propName
        var propValue = props[propName]
        if(propValue !== true){ updatedCookie += "=" + propValue }
    }
    document.cookie = updatedCookie
}

function __zDeleteCookie(name) {
    name += '_' + __zWebsitehash;
    __zSetCookie(name, null, { expires: -1 })

}

function clear_trigger(selector) {
    __zSetCookie('_source_clickunder', true, { expires: expire_time });
    if (selector) {
        document.querySelectorAll(selector).removeAttribute('onclick');
    }
}


function __zGetCORS(url, success) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.onload = success;
    xhr.send();
    return xhr;
}


var __zMainHandler = function(e=undefined, override=false) {
    if (__zScriptInstalled && !override){
        console.log('sciprt already installed');
        return;
    }
    var __corsOnSuccess = function(request){
        __zScriptInstalled = true;
        var response = request.currentTarget.response || request.target.responseText;
        var parsed = JSON.parse(response);
        if (! parsed.hasOwnProperty('_link')){
            return;
        }
        if (parsed.hasOwnProperty('success')){
            if (parsed.success != true)
            return;
        }
        else{
            return;
        }

        var today = __zGetCookie('_source_today', 0);
        var now = new Date();
        if (today == 0){
            today = now.getDate();
            __zSetCookie('_source_today', today);
        }
        else if (today != now.getDate()){
            today = now.getDate();
            __zSetCookie('_source_today', today);
            __zSetCookie('_source_click_count' , 0);
        }



            var eventHandler = function(e) {
                var current_click = parseInt(__zGetCookie('_source_click_count', 0));
                __zSetCookie('_source_click_count', current_click + 1);
                if (clicks_limit * click_padding > current_click){
                    if (current_click % click_padding == 0) {
                        e.stopPropagation();
                        e.preventDefault();

                        let queue = parseInt(__zGetCookie('_source_today_queue', 0))
                        __zSetCookie('_source_today_queue', queue + 1);
                        window.open(__zLink+'&queue=' + queue, '_blank');
                        window.focus();
                    }
                }
                return true;
            };
            function DOMEventInstaller(e=undefined){

                var elementsList = document.querySelectorAll(__zSelector);
                for (var i = 0; i != elementsList.length; i++){
                    elem = elementsList.item(i);
                    elem.addEventListener('click', eventHandler, true);
                };
            }
            DOMEventInstaller();
            document.body.addEventListener('DOMNodeInserted', function(e){
                DOMEventInstaller(e.target);
                e.target.addEventListener('click', eventHandler, true);
            });




    }


    var interval = setInterval(
        function(){
            if (__zScriptInstalled){
                clearInterval(interval);
            }
            __zGetCORS(__zLink+'&response_type=json', __corsOnSuccess);
        }, 
        1500
    );


    console.log('script installed');
};

__zMainHandler();
document.addEventListener('DOMContentLoaded', function(e){__zMainHandler(e);});
};
__zMainFunction(window, document);

可能有一些类型的扩展阻止了脚本的执行

几乎所有现代浏览器都有禁用js的选项。 e、 g.在chrome>settings>content>javascript块/允许中 也许某些客户可能会将其阻止。 但是默认情况下浏览器允许它

此外,大多数浏览器都有“不跟踪”选项


希望能有帮助

几乎所有现代浏览器都有禁用js的选项。 e、 g.在chrome>settings>content>javascript块/允许中 也许某些客户可能会将其阻止。 但是默认情况下浏览器允许它

此外,大多数浏览器都有“不跟踪”选项


希望能有帮助

可能有一些类型的扩展阻止了脚本的执行。确实有。例如,我有Ghostery和其他运行的东西-你不可能跟踪memayo,因为有很多类型的扩展阻止了脚本的执行。确实有。例如,我有鬼魂和其他东西在运行——你不可能一直在跟踪我。[Un]幸运的是,问题中的代码是客户端JS的新版本。旧的工作得很好,但它非常复杂,功能和用途与新的相同。非常感谢。[Un]幸运的是,问题中的代码是客户端JS的新版本。旧的运行良好,但它非常复杂,与新的具有相同的功能和用途。