使用Javascript检测双击Youtube URL

使用Javascript检测双击Youtube URL,javascript,events,double-click,Javascript,Events,Double Click,我希望能够检测双击标记,然后如果它与特定的正则表达式模式匹配,则运行一个函数。在本例中,我将检查正在单击的链接是否是指向Youtube视频的有效链接 我想知道除了将所有链接标记更改为: <a href="http://youtube.com/whatever" ondblclick="checkIfYoutubeLink();">link</a> 但不使用jQuery或任何Javascript库 谢谢。有帮助吗 更新 HTML 但是既然一次点击就触发了一个事件,为什么不

我希望能够检测双击
标记,然后如果它与特定的正则表达式模式匹配,则运行一个函数。在本例中,我将检查正在单击的链接是否是指向Youtube视频的有效链接

我想知道除了将所有链接标记更改为:

<a href="http://youtube.com/whatever" ondblclick="checkIfYoutubeLink();">link</a>
但不使用jQuery或任何Javascript库

谢谢。

有帮助吗

更新

HTML

但是既然
一次点击就触发了一个事件,为什么不只覆盖那个事件呢?你要抢双人房会遇到麻烦。

有帮助吗

更新

HTML

但是既然
一次点击就触发了一个事件,为什么不只覆盖那个事件呢?您在试图抓住双人间时会遇到麻烦。

您想要:

$('a[^=http://youtube.com]').dblclick(function(e){
    e.preventDefault();
    // Insert video iframe, or whatever you intend to do.
});
您不希望在此处仅使用普通JavaScript,否则会遇到跨浏览器问题等。如果您希望手动执行检查,而不是信任jQuery的正则表达式,请使用:

$('a').dblclick(function(e){
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test($(this).attr('href')))  // Does the href start with http://www.youtube.com/
    {
        e.preventDefault();
        // Insert video iframe, or whatever you intend to do.
    }
});
如果您确实坚持不使用jQuery,请尝试以下方法:

function dblclick_handler(el)
{
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test(el.href))  // Does the href start with http://www.youtube.com/
    {
        // Insert video iframe, or whatever you intend to do.
        return false;
    }
    return true;
}
然后:


注意,无论如何,您应该在此处单击
onclick

您需要:

$('a[^=http://youtube.com]').dblclick(function(e){
    e.preventDefault();
    // Insert video iframe, or whatever you intend to do.
});
您不希望在此处仅使用普通JavaScript,否则会遇到跨浏览器问题等。如果您希望手动执行检查,而不是信任jQuery的正则表达式,请使用:

$('a').dblclick(function(e){
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test($(this).attr('href')))  // Does the href start with http://www.youtube.com/
    {
        e.preventDefault();
        // Insert video iframe, or whatever you intend to do.
    }
});
如果您确实坚持不使用jQuery,请尝试以下方法:

function dblclick_handler(el)
{
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test(el.href))  // Does the href start with http://www.youtube.com/
    {
        // Insert video iframe, or whatever you intend to do.
        return false;
    }
    return true;
}
然后:



注意,无论如何,您都应该在这里使用
onclick

我建议您不要在任何元素上使用双击事件来执行单击操作;i、 e.链接、按钮等。 双击事件由两次单击组成,因此将执行任何onclick处理程序以及默认操作(加载链接的href)


虽然您可以使用诸如启动~50ms计时器(在onclick事件中触发单次单击操作,并在ondblclick事件中取消)之类的黑客技术来避免这种情况,但它有一个缺点:常规单击会延迟,并且取决于用户的双击速度,它可能会触发单次单击,即使用户执行了缓慢的操作双击。

我建议您不要对任何在单击时执行操作的元素使用双击事件;i、 e.链接、按钮等。 双击事件由两次单击组成,因此将执行任何onclick处理程序以及默认操作(加载链接的href)


虽然您可以使用诸如启动~50ms计时器(在onclick事件中触发单次单击操作,并在ondblclick事件中取消)之类的黑客技术来避免这种情况,但它有一个缺点:常规单击会延迟,并且取决于用户的双击速度,它可能会触发单次单击,即使用户执行了缓慢的操作双击。

首先选择您的元素,例如,如果您的元素id为“desiredElement”,请执行以下操作:

document.getElementById('desiredElement').ondblclick = function() {
    alert('action');
};

当然,您可以使用其他技术选择所需的元素。

首先选择您的元素,例如,如果您的元素id为“desiredElement”,请执行以下操作:

document.getElementById('desiredElement').ondblclick = function() {
    alert('action');
};
当然,您可以使用其他技术来选择所需的元素。

尝试以下方法:

function dblclick_handler(el)
{
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test(el.href))  // Does the href start with http://www.youtube.com/
    {
        // Insert video iframe, or whatever you intend to do.
        return false;
    }
    return true;
}
var a = document.getElementsByTagName('a'),
    total = a.length - 1,
    i;

for ( i = 0; i <= total; i++) {

   a[i].onclick = checkLink;

}


function checkLink(e) {

    e.preventDefault();

    var href = e.currentTarget.href;

    if ( href.match(/^http:\/\/youtube\.com/)) {

        //if this validate

    } else {

        window.location = href;

    }
}
var a=document.getElementsByTagName('a'),
总计=a.长度-1,
我
对于(i=0;i试试这个:

function dblclick_handler(el)
{
    var pattern = /^http\:\/\/www\.youtube\.com/;
    if(pattern.test(el.href))  // Does the href start with http://www.youtube.com/
    {
        // Insert video iframe, or whatever you intend to do.
        return false;
    }
    return true;
}
var a = document.getElementsByTagName('a'),
    total = a.length - 1,
    i;

for ( i = 0; i <= total; i++) {

   a[i].onclick = checkLink;

}


function checkLink(e) {

    e.preventDefault();

    var href = e.currentTarget.href;

    if ( href.match(/^http:\/\/youtube\.com/)) {

        //if this validate

    } else {

        window.location = href;

    }
}
var a=document.getElementsByTagName('a'),
总计=a.长度-1,
我

对于(i=0;我看到了,但它使用了jQuery。我真的需要在原始JS中使用它。我看到了,但它使用了jQuery。我真的需要在原始JS中使用它。如果可能的话,我不想使用jQuery,但这正是我想做的。@Wen,你决定了获胜的答案吗?如果可能的话,我不想使用jQuery,但是的,这很好。)“我想做什么?”温,你决定了获胜的答案了吗?