简体   繁体   English

JavaScript URL与WildCard比较

[英]JavaScript URL Compare with WildCard

Hey guys I have a project where I need to trigger a function on specific pages. 大家好,我有一个项目需要在特定页面上触发功能。

Users would input something like: 用户将输入如下内容:

var dexiTriggerPages = "/user/*/register, /user/*/pay";

If the current url matches the wildcard url, the function should trigger a conversion. 如果当前网址与通配符网址匹配,则该函数应触发转换。 The url can't contain another path after the given paths. 网址不能在给定路径之后包含其他路径。 Currently my current code is not working at all. 目前,我当前的代码根本无法正常工作。

// Trigger Conversions for Specific Pages
if(dexiTriggerPages.trim() != '')
{
    var urls = document.deximedia.explode(',',dexiTriggerPages);

    for (var i=0;i<urls.length;i++)
    { 
        var url = urls[i];
        if(url.indexOf("*") != -1)
        {
            var pass = true;

            var segments = document.deximedia.explode('*',url); 
            for (var i=0;i<segments.length;i++)
            { 
                if(document.URL.indexOf(segments[i]) == -1)
                {
                    pass = false;
                }
            }
            if(pass)
                document.deximedia.dexiTriggerConversion();
        }
        else
        {
            if(document.URL.indexOf(url) != -1)
            {
                document.deximedia.dexiTriggerConversion();
            }
        }
    }
}

Any help on getting this to work would be greatly appreciated! 任何帮助使此工作正常进行,将不胜感激!

Would you be willing to use regular expression to do this? 您愿意使用正则表达式来做到这一点吗?

(^/user/(.*)/register$|^/user/(.*)/pay$)

You can test it out on this website 您可以在此网站上进行测试

I was able to solve the problem by using the following: 我可以使用以下方法解决问题:

// Trigger Conversions for Specific Pages
if(dexiTriggerPages.trim() != '')
{
    var urls = document.deximedia.explode(',',dexiTriggerPages);
    var pathArray = document.deximedia.explode('/',window.location.pathname.replace(/^\/|\/$/g, ''));

    for (var i=0;i<urls.length;i++)
    { 
        var url = urls[i].trim().replace(/^\/|\/$/g, '');
        var urlPaths = document.deximedia.explode('/',url);
        if(pathArray.length == urlPaths.length)
        {
            var pass = true;
            for (var a=0;a<pathArray.length;a++)
            {
                if(pathArray[a] != urlPaths[a] && urlPaths[a] != '*')
                    pass = false;
            }
            if(pass == true)
                document.deximedia.dexiTriggerConversion();
        }

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM