我一直在使用SublimeVideo,并且在我正在工作的网站上已经做了很多工作。

通过网站上的用户点击链接,我已经有15-20个视频可以成功通过网站上的SublimeVideo成功使用,单击后,该视频在SublimeVideo灯箱中打开并开始播放。

但是现在,我需要为这些视频创建“较短的URL”,这些URL可以在印刷出版物和电子邮件中发送出去,并且可以将用户带到网站进行查看,而不仅仅是视频文件。

理想情况下,我希望只在单页网址中使用带有标签的id / data-uid,并让选定的视频在灯箱内自动启动“ n”播放。这似乎是不可能的(?)。

我可以选择隐藏视频标签的单个页面,并取消隐藏标签并在URL中播放它。如果所有这些方法都不奏效,也许我会过时了,为每个视频制作一个页面,然后将其嵌入页面中。

无论如何,在搜索所有文档页面,其论坛和搜索网络之后,我只发现了两个选项-都没有实际起作用。我将它们粘贴在下面:

首先,这是我在所有视频中使用的HTML的示例:

<p class=""><a href="#video1" class="sublime" data-autoresize="fit">video1 text link on page</a></p>

<video id="video1" data-uid="video1" title="video1 description" poster="/assets/images/video1.jpg" width="1084" height="574" style="display:none" data-autoresize="fit" preload="none">
    <source src="/assets/videos/video1.mp4" />
</video>


就其本身而言,效果很好!我不想改变那个。单击文本链接后,灯箱会打开,视频会完美播放。

因此,假设包含上述代码的15-20个视频的页面位于:

http://example.com/resources/index.php


我以为我可以为第一个视频创建该URL:

http://example.com/resources/index.php#video1


甚至更好

http://example.com/resources#video1


...并效仿其他所有视频ID。

为了使它起作用,我尝试了:

<script type="text/javascript">
    sublimevideo.ready(function()
        {
        if (window.location.hash == '#video1') {
                             sublime('video1').play();
        } else
        if (window.location.hash == '#video2') {
                             sublime('video2').play();
        } else
        if (window.location.hash == '#video3') {
                             sublime('video3').play();
        }
    });
</script>


...那是行不通的。由于某种原因,它可以与页面上的第一个视频一起使用,但是我的意思是“工作”是取消隐藏并使其可以播放,而不是在灯箱中打开并自动播放。

因此,我在共享文档区域中找到了如下代码:

<script type="text/javascript">

    var hashtag = "#video1";
    var hashtag = "#video2";
    var hashtag = "#video3";

    if (document.location.hash == hashtag) {
      showTheVideo(hashtag);
    }

    function showTheVideo(hashtag) {
    }
</script>


...但是那也不行。

知道JavaScript的人可以帮我拼一下吗?

最佳答案

我将在这里为我解决该问题的代码寄予希望,希望它有一天能对可能会进行搜索和查找的其他人有所帮助。

通过将下面的代码放在页面的开头,在...的下面。

<script type="text/javascript" src="//cdn.sublimevideo.net/js/UniqueIDprovidedInYourAccountGoesHere.js"></script>


...库(SublimeVideo在您的帐户区域为您提供的随机字符/数字.js),我终于能够解决上述详细问题(可以!)。

因此,使用与上述相同的示例,此URL现在可以按我的需要运行(不仅将您带到资源页面,而且还通过在其灯箱中启动特定视频)。

http://example.com/resources.php#video=interview2


...并输入:

RewriteRule ^resources$ resources.php [L]


...在同一目录的.htaccess文件中,我可以使用户更加轻松:

http://example.com/resources#video=interview2


据我了解,下面的JavaScript附加功能找到哈希,然后查找“ video =“,然后取其后的内容,如果它在“ a”标签中找到匹配的“ id”,则告诉它通过在灯箱中启动该视频来实现SublimeVideo。辉煌!

    <script type="text/javascript">

        $(document).ready(function () {

            var lochash    = location.hash.substr(1);
            var mylocation = lochash.substr(lochash.indexOf('video='))
                             .split('&')[0]
                             .split('=')[1];

            sublime.ready(function () {

                var lightbox = sublime.lightbox(mylocation);
                    lightbox.open();
            });
        });
    </script>


这是HTML部分(供参考):

<p class=""><a href="#video2" id="interview2" class="sublime" data-autoresize="fit">video2 text link on page that i left as reference for the user in case they close the video that was launched from the publication</a></p>

<video id="video2" data-uid="video2" title="video2 description" poster="/assets/images/interview2.jpg" width="1084" height="574" style="display:none" data-autoresize="fit" preload="none">
    <source src="/assets/videos/interview2.mp4" />
</video>


另请注意:通过反复试验,我发现URL中“#video =“之后的视频名称必须与“ A”标记中的“ ID”相同,而不是“ video”标记!因此,您会注意到两者之间的“ id =”是(并且必须)不同。相反,“视频”标签中的“ id =“与“ href =”相同。

10-06 15:09