使用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,但是的,这很好。)“我想做什么?”温,你决定了获胜的答案了吗?