2012-01-03 58 views
3

我的目标是根据我在地址栏中指定的URL在colorbox中打开媒体资源。使用javascript从URL调用colorbox

主题已经在网络上讨论过了,但我似乎无法使用加上'?open = true'的url加上URL来打开特定的视频。

HTML代码

<ul>   <li class="media-row"> 

      <a rel="" class="colorbox-inline initColorboxInline-processed cboxElement" href="/?width=600px&amp;height=400px&amp;title=&amp;inline=true#colorbox-inline-1"><img width="205" height="115" class="imagecache imagecache-lightbox_small" title="" alt="" src="http://localhost:8888/sites/default/files/imagecache/lightbox_small/emvideo-vimeo-33340864.jpg"></a><div style="display: none;"><div id="colorbox-inline-1"><div class="emvideo emvideo-video emvideo-vimeo"><div class="media-vimeo" id="media-vimeo-1"> 
    <iframe width="600" height="375" src="http://player.vimeo.com/video/33340864?fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;autoplay=0"></iframe> 
</div> 
</div> 
</div></div>  
      <h3>Sample Video</h3>  
      <p>Lorem ipsum dolor sit ame 
</p>    
     </li> 
      <li class="media-row"> 

      <a rel="" class="colorbox-inline initColorboxInline-processed cboxElement" href="/?width=600px&amp;height=400px&amp;title=&amp;inline=true#colorbox-inline-2"><img width="205" height="115" class="imagecache imagecache-lightbox_small" title="" alt="" src="http://localhost:8888/sites/default/files/imagecache/lightbox_small/emvideo-vimeo-9445708.jpg"></a><div style="display: none;"><div id="colorbox-inline-2"><div class="emvideo emvideo-video emvideo-vimeo"><div class="media-vimeo" id="media-vimeo-2"> 
    <iframe width="600" height="375" src="http://player.vimeo.com/video/9445708?fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;autoplay=0"></iframe> 
</div> 
</div> 
</div></div>  
      <h3>Custom Video</h3>  
      <p>Lorem ipsum dolor sit amet, conse 
</p>    
     </li> 
      <li class="media-row"> 

      <a rel="" class="colorbox-inline initColorboxInline-processed cboxElement" href="/?width=600px&amp;height=400px&amp;title=&amp;inline=true#colorbox-inline-3"><img width="205" height="115" class="imagecache imagecache-lightbox_small" title="" alt="" src="http://localhost:8888/sites/default/files/imagecache/lightbox_small/emvideo-vimeo-33989254"></a><div style="display: none;"><div id="colorbox-inline-3"><div class="emvideo emvideo-video emvideo-vimeo"><div class="media-vimeo" id="media-vimeo-3"> 
    <iframe width="600" height="375" src="http://player.vimeo.com/video/33989254?title=0&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;autoplay=0"></iframe> 
</div> 
</div> 
</div></div>  
      <h3>Keor limpon</h3>  
      <p>Med borla dorla shoe 
</p>    
     </li> 


     </li> 
     </ul> 

JS

var 
vars = [], 
hash, 
hashes = window.location.href.slice(window.location.href.indexOf('?') 
    + 1).split('&'); 
     for(var i = 0; i < hashes.length; i++) { 
      hash = hashes[i].split('='); 
      vars.push(hash[0]); 
      vars[hash[0]] = hash[1]; 
     } 
     $(".colorbox-inline").colorbox({open:vars['open'] == 'true' ? true : false}); 
+0

有什么问题? – 2012-01-03 20:52:24

+0

问题是我无法找到打开colorbox的方法。我在这方面的知识是有限的。从我的理解:我将colorbox分配给var,检索锚点散列,然后根据散列值打开colorbox。也许像http://url.com/#colorbox-inline-2?open=true。但是我根本无法打开它。 – arkjoseph 2012-01-03 21:00:19

+0

我认为你正在寻找一个聊天室。 – 2012-01-03 21:01:05

回答

1

你的做法是一个良好的开端,但它不工作的原因是因为你还需要设置为颜色框定位的每个的方式colorbox分开。目前,colorbox通过colorbox-inline类获取所有元素的jquery集合,如果open = true,它将始终只打开集合中的第一个元素。并且由于您没有对它们进行分组(通过为它们分配相同的非空rel属性),集合中的其余元素将被忽略。

为了让颜色框到目标页面上特定的颜色框,给的id在你的HTML所有colorboxes:

<a id="cb1" class="colorbox-inline" href="...">...</a> 

然后,在JavaScript中,实例所有colorboxes,但只有一个打开颜色框这些ID是在URL中发送的(如下所示:http://site.com/page.html?open=cb1):

//get the colorbox id in url (or set to false if not found) 
var colorboxId = 
     (window.location.href.indexOf('open=')==-1) ? 
      false : 
      window.location.href.slice(window.location.href.indexOf('open=') + 'open='.length + 1).split('&')[0]; 

//OR: if you prefer using regular expressions, you can tidy 
//that up with something like this: 
var colorboxId = url.match(/open=([\w\d]*)/) && RegExp.$1 || false; 

//instantiate all colorboxes on the page (but do not open any) 
$(".colorbox-inline").colorbox(); 

//if the id of the colorbox was sent in the url, open it now 
if(colorboxId!==false) { 
    $('#' + colorboxId).colorbox({open:true}); 
} 
+0

谢谢DonamitelsTNT,你介意解释你的答案是否完整? – arkjoseph 2012-01-04 00:15:07

+0

当然,arkjoseph。在更好地重读代码之后,我的原始答案在任何情况下都需要更多。我希望这个更清楚.. – Donamite 2012-01-04 16:22:24

+0

你的意思是说我需要为每个锚点添加一个独特的类...例如:#cb1,#cb2,#cb3 – arkjoseph 2012-01-04 20:52:09