2013-09-27 110 views
0

首先让我来解释一下这个问题:最简单的方法来禁用链接到外部网站?

在整个网站IM建筑的某些页面,用户可以点击视频的缩略图,并且模式(引导)显示在该视频中,这是一个嵌入链接视频托管的各种网站。但是,问题在于,如果用户点击播放/暂停之外的任何地方,或者在视频内部,则会将其带到嵌入式视频网站。 有反正我可以阻止这个吗?

我的目标是让用户在我的网站上观看嵌入式视频,而不是让他们离开只是为了点击视频播放器。

我正在寻找一种方式(可能与jQuery),禁用任何,所有链接,而模态显示。或者如果有另一种更简单的方式,id很想知道。谢谢!

+0

这取决于您从哪个网站上嵌入视频(例如** **版权**)例如YouTube有一个按钮,用于观看“YouTube.com”上的视频,查找支持流行网站API的播放器(以获得视频来源永久链接) –

+0

那么有没有什么办法可以提醒用户他们将要离开网站?视频嵌入链接是用户提交的,我无法控制是否有视频可能来自的特定网站的API。 – ThatGuy343

+0

你可以使用''''unload'''和/或''''beforeunload'''方法,这些方法在浏览器行为(浏览器版本)上有所不同,但是你仍然必须区分导航是否启动通过点击和什么是通过地址栏条目和/或关闭标签/窗口。保留一个点击计时器或者指定点击URL的有效性的另一个变量。 – cbayram

回答

2

由于您尚未分享您的代码或结构的摘录,因此我们只能提供有限的建议。尝试这样的事情(假设你的引导模式被包裹在一个容器用id #myModal):

$('#myModal a').on('click', function(e) { 
    e.preventDefault(); 

    /* your own logic to handle the click if you want */ 

    return false; 
}); 

这将阻止(在这种情况下,导航)的所有锚标签的默认操作,你可以添加自己的自定义处理程序,如果你想提醒用户他们要离开网站(在这种情况下不要返回false)。

更新:由于您的场景中的嵌入式播放器可能具有自己的导航链接,因此上述代码段将不起作用。您可以做的最好的方法是检测导航并提示用户确认他们是否真的想从您的网站导航。

首先设置以下事件处理程序当用户点击视频链接检测和即将被导航离开该页面:

window.onbeforeunload = function() { 
    if (window.isPlayingVideo) { 
     return "Are you sure you want to stop playing the video and leave the website?"; 
    } 
} 

然后,当用户点击视频缩略图打开该模式的玩家,并开始播放视频,设置以下标志:

window.isPlayingVideo = true; 

这将提示用户确认,如果他们想离开页面(确切的UI依赖于浏览器)。请注意,您仍然无法禁用代码中的导航。你所能做的就是给用户一个选择。

+0

模式被封装在一个带有id的容器中。我试过这个,它在普通的文本链接上工作(当只是为了测试目的而放置时),但它不会阻止链接在播放或暂停时在视频内部/内部点击时发挥作用。 – ThatGuy343

+0

@ ThatGuy343对不起,我之前完全不了解这个问题。我用另一种可能的方式扩展了答案,以解决您的问题。请记住,您仍然无法禁用代码中的导航。你所能做的就是阻止导航。 –

+0

非常感谢你为此详细阐述!它工作完美,我可以给予选择,比直接链接更好。我非常感谢你花时间回答这个问题:) – ThatGuy343

相关问题