javascript来查看字符串&的链接发射模式

时间:2018-05-22 15:49:45

标签: javascript hyperlink

有一个包含链接的页面。

点击链接后,我想要Javascript(或其他)检查链接是否包含(例如奶酪)

如果是,那么模式应该启动显示链接。

示例:

http://mylink/just-normal/ - 点击后,应该正常进行

http://mylink/with-cheese/ - 点击此按钮后,应启动模态

http://mylink/another-link/ - 点击后,应该正常进行

http://mylink/other-link/ - 点击后,应该正常进行

模态应显示完整链接。

感谢任何帮助。

以下是我到目前为止所做的事情。

我的具体问题是: 问题:当我点击网站上的任何链接时,会打开一个模态。它似乎是针对所有链接,而不仅仅是包含特定单词的链接。

   jQuery(function () {


jQuery(document).on('click', jQuery('a') , function(event){

    var e = event;  
    event.preventDefault;
    var that = event.target;
    if(jQuery(that).is("span")){
        that = jQuery(event.target).parent();   
    }
    if(jQuery(that).attr('href')){
        var url = jQuery(that).attr('href').toLowerCase();
        if(jQuery.browser.webkit || jQuery.browser.mozilla && (url.indexOf('.my.test.here/') >=0)) {
            ie_pointer(e, that);
        }
        else if (jQuery.browser.webkit && || jQuery.browser.mozilla (url.indexOf('something.else/') >=0)){
            var overall = jQuery('.overall');
            ie_pointer(e, overall, that);
        }
    }       
});

});

function ie_pointer(event, obj, that){
    event.preventDefault();
    if(that){
    var url = jQuery(that).attr('href');
    }
    else{
    var url = jQuery(obj).attr('href');
    }
    jQuery('<div class="modal-backdrop"></div>').hide().appendTo(document.body).fadeIn();
    jQuery(obj).after('<div class="modal-content" style="padding:10px"><h3 style="color:#333">Please copy the blue link below into Internet Explorer</h3><p style="font-size: 1.2rem; color:#333">This form is currently unavailable in Firefox & Chrome.</p><h4 style="color: #0099cc; max-width: 400px; word-wrap:break-word;">'+url+'</h4><i onclick="close_modal()" class="icon-remove"></i></button></div>');
}

function close_modal(){
    jQuery(".modal-backdrop").fadeOut(function(){jQuery(this).remove()});
    jQuery('.modal-content').fadeOut(function(){jQuery(this).remove()});
    }

1 个答案:

答案 0 :(得分:0)

您的点击事件处理程序已设置为事件委派,因此它仅在parallel -j90 script.sh < url_amendements_15.txt event.target时才会响应:

<a>

然而,在处理程序内部,你有这个:

jQuery(document).on('click', jQuery('a') , function(event){

由于您if(jQuery(that).is("span")){ that = jQuery(event.target).parent(); } 设置为that,因此event.target条件永远不会是if,因此我不确定您要完成的是什么它

true元素具有<a>时,函数的其余部分会运行,但是也有href个条件不合理:

if

如果浏览器为if(jQuery.browser.webkit || jQuery.browser.mozilla && (url.indexOf('.my.test.here/') >=0)) { ie_pointer(e, that); } else if (jQuery.browser.webkit && || jQuery.browser.mozilla (url.indexOf('something.else/') >=0)){ var overall = jQuery('.overall'); ie_pointer(e, overall, that); } 或者true且该属性包含您的测试字符串,则您的第一个条件为webkit。当浏览器为mozilla时,为什么不想测试字符串?

您的webkit条件执行相同的操作,但由于您忘记了else if,因此您遇到语法错误:

&&

也许更重要的是,为什么你关心它是什么浏览器? JQuery deprecated the browser flags in version 1.9 ,因为它们基于jQuery.browser.mozilla (url.indexOf('something.else/') >=0)) ,这一直是浏览器嗅探的不可靠方式。

这里有一个简洁的示例,即使用标准 CSS attribute selector navigator.userAgent中某个字符串的链接做一件事而其他所有人做其他事情强>:

&#13;
&#13;
href
&#13;
var url = "console";

// Simply use the attribute wildcard selector to make sure
// you are only selecting links you care about in the first place
$("a[href*='" + url + "']").on("click", function(evt){
  evt.preventDefault();
  alert("You clicked a link that I care about!");
});
&#13;
&#13;
&#13;